'this' vs $ scope w kontrolerach AngularJS

wSekcja „Utwórz komponenty” na stronie głównej AngularJS, jest ten przykład:

controller: function($scope, $element) {
  var panes = $scope.panes = [];
  $scope.select = function(pane) {
    angular.forEach(panes, function(pane) {
      pane.selected = false;
    });
    pane.selected = true;
  }
  this.addPane = function(pane) {
    if (panes.length == 0) $scope.select(pane);
    panes.push(pane);
  }
}

Zauważ, jakselect metoda jest dodawana do$scope, aleaddPane metoda jest dodawana dothis. Jeśli zmienię to na$scope.addPane, kod się psuje.

Dokumentacja mówi, że w rzeczywistości jest różnica, ale nie wspomina o różnicy:

Poprzednie wersje Angulara (pre 1.0 RC) pozwalały na używaniethis zamiennie z$scope metoda, ale tak nie jest. Wewnątrz metod zdefiniowanych w zakresiethis i$scope są wymienne (zestawy kątowethis do$scope), ale nie inaczej w twoim konstruktorze kontrolera.

Jakthis i$scope pracować w kontrolerach AngularJS?

questionAnswers(7)

yourAnswerToTheQuestion