'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?