Javascript 在'上停止事件侦听器$销毁';。TypeError:$on不是一个函数;
我试图在作用域被破坏时停止所有事件侦听器 我得到这个错误:Javascript 在'上停止事件侦听器$销毁';。TypeError:$on不是一个函数;,javascript,angularjs,angular-controller,angularjs-events,Javascript,Angularjs,Angular Controller,Angularjs Events,我试图在作用域被破坏时停止所有事件侦听器 我得到这个错误: TypeError: vm.$on is not a function; 这两个vm.on(..)都不起作用 问题是,vm没有声明(…上的$on,您必须使用$scope。将其注入控制器并像$scope.$on一样声明 当使用controllerAs语法时,经常会误解您根本不应该使用$scope。然而,建议避免对某些活动使用$scope,而不是从控制器中取消它。scope始终存在,它是控制器的内部,只是不要像视图m一样使用它odel,
TypeError: vm.$on is not a function;
这两个vm.on(..)都不起作用
问题是,
vm
没有声明(…上的$on,您必须使用$scope
。将其注入控制器并像$scope.$on
一样声明
当使用controllerAs
语法时,经常会误解您根本不应该使用$scope
。然而,建议避免对某些活动使用$scope
,而不是从控制器中取消它。scope始终存在,它是控制器的内部,只是不要像视图m一样使用它odel,但是你可以用它来完成诸如听事件、广播、emmit等任务
尝试类似的方法(在对依赖项注入$scope
之后):
问题是,vm
没有声明(…
上的$on,您必须使用$scope
。将其注入控制器并像$scope.$on
一样声明
当使用controllerAs
语法时,经常会误解您根本不应该使用$scope
。然而,建议避免对某些活动使用$scope
,而不是从控制器中取消它。scope始终存在,它是控制器的内部,只是不要像视图m一样使用它odel,但是你可以用它来完成诸如听事件、广播、emmit等任务
尝试类似的方法(在对依赖项注入$scope
之后):
vm
是一个控制器,而不是作用域。在这种情况下,您需要注入$scope
服务。我不是AngularJS guy,但$on是$scope方法…vm
是一个控制器,而不是作用域。在这种情况下,您需要注入$scope
服务。我不是AngularJS guy,但$on是$scope方法。。。
angular.module('app.layout')
.controller('DashboardController', DashboardController);
DashboardController.$inject = ['$interval','dataservice'];
function DashboardController($interval, dataservice) {
var vm = this;
vm.name = "DashboardController";
console.log('Init Dashboard Controller');
initEvents();
/*
...
*/
/////////////////////////////
function initEvents() {
vm.$on('$destroy', function() {
vm.stop();
console.log('DashboardController scope destroyed.');
})
}
$scope.$on('$destroy', function() {
vm.stop();
console.log('DashboardController scope destroyed.');
})