【发布时间】:2015-07-09 00:01:05
【问题描述】:
假设我有一个使用名为myController的外部控制器的指令
(function() {
'use strict';
angular
.module('app')
.controller('myController', myController);
myController.$inject = ['$rootScope'];
function myController($rootScope) {
//my app code...
var clearRoot1 = $rootScope.$on('event1', doSomething);
var clearRoot2 = $rootScope.$on('event2', doSomethingElse);
var clearWatcher = $scope.$watch('model', updateSomething);
$scope.$on('$destroy', clearWatcher);
$scope.$on('$destroy', clearRoot1);
$scope.$on('$destroy', clearRoot2);
}
})();
如您所见,我正在创建多个侦听器,因此我必须侦听 $destroy 事件以清除每个侦听器。
所以我有两个问题,一个是实用的,一个主要是美学的。
实际问题
你真的需要调用 clearWatcher 作为观察者绑定到指令的 $scope ,当指令元素从 DOM 中删除时将被销毁?
审美问题
有没有一种很好的方法来清除所有监听器,只需一个回调 $destroy 事件?类似$scope.$on('$destroy', ['clear1', 'clear2']);
【问题讨论】:
-
$scope.$on('$destroy', function(){ clear1(); clear2()});
标签: javascript angularjs angularjs-directive