Ответ 1
Просто потому, что вы используете синтаксис controllerAs
, это не значит, что нет $scope
или вы не можете его использовать.
Фактически, все controllerAs
- это добавить контроллер this
в $scope
(под указанным именем). Например:.
ng-controller="SomeCtrl as ctrl"
будет делать это неявно:
.controller('SomeCtrl', function () {
this.value = 'something';
...
// Angular will implicitly so something equivalent to:
// $scope.ctrl = this;
}
Итак, нет ничего, что помешало бы вам использовать $scope
(это действительно полезно для таких вещей, как $watch
ing stuff и отправка/прослушивание событий):
<!-- In the VIEW -->
<div ng-controller="SomeCtrl as ctrl">
Some value: {{ctrl.value}}
<button ng-click="ctrl.doSomething()">Some action</button>
</div>
/* In the CONTROLLER */
.controller('SomeCtrl', function ($scope) {
this.value = 'some value';
this.doSomething = function () { ... };
$scope.$on('$destroy', function () {
// So some clean-up...
});
});
См. также эту короткую демонстрацию.