【发布时间】:2016-04-25 11:01:04
【问题描述】:
我有一个属性指令附加到我的应用程序模板之一中的元素。当我离开这个模板时,与之关联的控制器会收到一个销毁事件。但是,该指令似乎也没有收到此事件。有什么方法可以在指令中接收它?
模板:
<div ng-controller="myController">
<div my-directive></div>
</div>
在控制器中:
$scope.$on('destroy', function(){
console.log('This fires just fine');
})
在指令的链接函数中:
scope.$on('destroy', function(){
console.log('This will not fire');
})
element.on('destroy', function(){
console.log('This will not fire either');
})
我发现几年前的一个问题与我的问题非常相似,但它被标记为已解决:https://github.com/angular/angular.js/issues/683。
【问题讨论】:
-
我有一次遇到了类似的问题,最终广播了一个我在子范围内监听的自定义销毁事件。不知道它打破了多少“规则”,但它解决了我留下孩子的问题。
-
啊,那行得通。似乎应该有更好的方法来处理这个问题。
-
我同意,感觉很“hacky”。我为此苦苦挣扎(特别是当需要在混合应用程序中从 jQuery 中“销毁”时)并且找不到更好的方法。很想听听其他社区的意见 :) 这是经过大量研究和失败的努力后我能想到的最好的。
-
我不认为这是完全相同的问题,答案并没有解决问题——指令中也没有调用
element.on('destroy')。