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是控制器中应该使用的方式。一切都是糖。组件
是指令的糖
指令
是工厂
的糖。