Javascript 组件上的指令中的$destroy

Javascript 组件上的指令中的$destroy,javascript,angularjs,Javascript,Angularjs,我有一个组件和一个属性指令,如下所示: 当组件被销毁时,我调用$scope.$destroy()($scope被注入到组件控制器中) 在指令的链接函数中,我有一个如下侦听器: $scope.$on('$destroy',function(){…问题是它不起作用。这些似乎是不同的作用域 现在我有了一个解决办法: 在组件控制器中添加$ctrl.scope=$scope; 要求:“^myComponent”,并使用myComponent.scope-然后它就可以工作了 问题是:如何侦听组件销毁内部指

我有一个组件和一个属性指令,如下所示:

当组件被销毁时,我调用
$scope.$destroy()($scope被注入到组件控制器中)

在指令的
链接
函数中,我有一个如下侦听器:
$scope.$on('$destroy',function(){…
问题是它不起作用。这些似乎是不同的作用域

现在我有了一个解决办法:

在组件控制器中添加
$ctrl.scope=$scope;

要求:“^myComponent”,
并使用
myComponent.scope
-然后它就可以工作了

问题是:如何侦听组件销毁内部指令


添加:此
myComponent
是使用
$compile
创建的,如果它更改了某些内容

您可以使用scope的
$ctrl
属性从指令访问控制器,
然后在组件控制器实例上使用指令中的
$onDestroy(…)
(而不是范围中的
$on('destroy',…)
)听组件作用域的销毁。

这与我的解决方法大致相同。但我想知道是否有更好、更本机的方法,嗯,但是组件销毁的文档中说,
用$ondstroy()替换控制器中的任何$scope。$on('$destroy')实例生命周期挂钩
难道不是一种糖吗?@k102它怎么可能比这更自然?$onDestroy是控制器中应该使用的方式。一切都是糖。
组件
指令的糖
指令
工厂
的糖。