В разделе "Создать компоненты" на главной странице 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?
