假设我有一个用于呈现为ng-view
的页面的控制器。
此控制器绑定到外部源(如应用程序范围的消息总线)的某些事件,以更新其模型。这基本上是非常简单的:
function MyController ($scope) {
$scope.bar = '…';
externalSource.on('foo', function (data) {
$scope.$apply(function () {
$scope.bar = data.bar;
});
});
}
问题是:一旦与控制器关联的视图不再显示,我如何解除与外部源的绑定?
有没有像dispose
事件之类的东西?
或者我的方法是完全错误的,我应该以其他方式处理类似的事情?如果是这样的话,是怎么做的?
发布于 2013-03-18 00:15:34
要在控制器的作用域被销毁时执行事件unbind,请使用:
$scope.$on('$destroy', function () { /* Unbind code here */ });
有关更多信息,请参阅Scope文档
发布于 2013-03-17 22:58:34
使用$routeChangeStart或$routeChangeSuccess事件:
function MyController ($scope) {
$scope.bar = '…';
externalSource.on('foo', function (data) {
$scope.$apply(function () {
$scope.bar = data.bar;
});
});
$scope.$on('$routeChangeStart', function(next, current){
// unregister listener
// externalSource.off ....
});
}
..。或$destroy
事件:
$scope.$on('$destroy', function(){
// unregister listener
// externalSource.off ....
});
https://stackoverflow.com/questions/15460222
复制相似问题