如何在销毁控制器/ $ scope时取消绑定外部事件?

Gol*_*den 19 events controller angularjs

假设我有一个控制器用于正在呈现的页面ng-view.

此控制器绑定到外部源(例如应用程序范围的消息总线)的某些事件以更新其模型.这基本上非常简单:

function MyController ($scope) {
  $scope.bar = '…';

  externalSource.on('foo', function (data) {
    $scope.$apply(function () {
      $scope.bar = data.bar;
    });
  });
}
Run Code Online (Sandbox Code Playgroud)

问题是:如果控制器与其关联的视图不再显示,我如何从外部源取消绑定控制器?

是否存在诸如dispose事件或类似事物之类的东西?

或者我的方法是完全错误的,我应该以其他方式处理类似的事情?如果是这样,怎么样?

Dmi*_*eev 35

要在控制器的范围被破坏时执行事件解除绑定,请使用:

$scope.$on('$destroy', function () { /* Unbind code here */ });

有关详细信息,请参阅范围文档

  • 我认为你的意思是`$ scope.$ on('$ destroy',function(){...})` (2认同)