Angular JS 父作用域单击处理程序未被销毁

Angular JS Parent Scope Click Handler Not Destroyed

这是我的html

<div controller="parent">
<button ng-click="doSomething()"><Click</button>
<div ng-view></div>
</div>

这是我的特定视图的 js 控制器:

function child($scope) {
   $scope.$parent.doSomething = function() {
      // do http request or seomthing else
   }
}

现在,当我在子控制器视图上时,angular 在我单击父范围上的按钮时执行 http 请求,但是当我导航到具有不同控制器的其他视图时(当然),angular 当我点击父作用域上的按钮时仍然做 http 请求。

我认为当视图发生变化时,控制器及其作用域将被销毁,从而有效地删除对该特定作用域对象的引用。

我的解决方法是监听 $scope.on('$destroy') 并将函数重写为 return 空或其他内容。

有更好的方法吗?

谢谢

$scope.$parent.doSomething 正在将 doSomething 属性 添加到该父 $scope 对象。只要该父作用域没有被破坏,您的点击处理程序就会一直存在。