С помощью $scope
легко испустить событие или посмотреть его.
(function() {
"use strict";
angular
.module("app")
.controller("Ctrl", [
"$scope",
CtrlDefinition
]);
function CtrlDefinition($scope) {
$scope.$on("change", listenForChange);
function listenForChange(data) {
//do something
}
}
})();
Но если я попытаюсь использовать синтаксис var vm = this
, я предупреждаю, что $on
, $emit
и $broadcast
не являются методами this
. Как я могу получить к ним доступ? Мне все еще нужно вводить $scope
в определение контроллера?
(function() {
"use strict";
angular
.module("app")
.controller("Ctrl", CtrlDefinition);
function CtrlDefinition() {
var vm = this;
vm.$on("change", listenForChange); //$on is not a method of vm
}
})();
Вы могли бы сделать что-то подобное, но разве это не победит цель не использовать $scope
вообще?
(function() {
"use strict";
angular
.module("app")
.controller("Ctrl", [
"$scope",
CtrlDefinition
]);
function CtrlDefinition($scope) {
var vm = this;
vm.scope = $scope;
vm.scope.$on("change", listenForChange);
}
})();
Как вы можете получить доступ к наблюдателям с контроллером как синтаксис?