В разделе "Создать компоненты" на главной странице AngularJS приведен пример:
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);
}
}
Обратите внимание, что метод select
добавлен в $scope
, но метод addPane
добавлен в this
. Если я изменю его на $scope.addPane
, код сломается.
В документации говорится, что на самом деле это разница, но в ней не упоминается, в чем разница:
Предыдущие версии Angular (pre 1.0 RC) позволили использовать
this
взаимозаменяемо с методом$scope
, но это уже не так. Внутри методов, определенных в областиthis
и$scope
, взаимозаменяемы (angular устанавливаетthis
в$scope
), но не внутри внутри вашего конструктора контроллера.
Как работают this
и $scope
в контроллерах AngularJS?