【问题标题】:$destroy in directive on component组件指令中的 $destroy
【发布时间】:2017-07-27 09:17:54
【问题描述】:

所以我有一个组件和一个属性指令,如下所示: <my-component my-directive>.

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

Inside 指令的 link 函数我有一个这样的监听器: $scope.$on('$destroy', function () {... 问题是它不起作用。看来这些是不同的范围。

现在我有一个解决方法:

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

require : '^myComponent', 并使用 myComponent.scope - 然后就可以了。

问题是:如何在指令中监听组件销毁?

添加:这个myComponent 是使用$compile 创建的,以防它改变一些东西

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

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

    【讨论】:

    • 嗯,这和我的解决方法差不多。但我想知道是否有更好、更原生的方式
    • 嗯,但是组件销毁的文档说Replace any $scope.$on('$destroy') instances in your Controller with $onDestroy() lifecycle hook
    • 不就是糖吗?
    • @k102 它怎么能比这更原生呢? $onDestroy 是它应该在控制器中完成的方式。一切都是糖。 componentdirective 的糖。 directivefactory 的糖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2016-04-25
    • 2015-07-09
    • 2016-05-16
    相关资源
    最近更新 更多