在ng-if中删除指令后执行的指令回调

时间:2016-11-30 08:01:06

标签: javascript angularjs angularjs-directive callback angularjs-scope

  • 我的页面上有一个角度指令,在ng-if。

  • 我有一个服务,它公开一个接收回调作为参数的函数。我们将此函数称为functionX。

当ng-if表达式的计算结果为true时,我的指令会调用functionX,并向它发送一个回调,以便在将来的某个时刻执行。

现在,问题是:如果我的ng-if表达式现在变为false,那么服务仍会执行我发送的回调......

任何想法如何处理这个问题?

2 个答案:

答案 0 :(得分:0)

你可以在一个promise中包装functionX并在解析后的promise上使用.then()方法来执行以前的回调函数吗?

这将允许您在指令内执行,而不是在服务中执行。

我想这取决于功能正在做什么,但这样的声音可能是一个潜在的解决方案。

答案 1 :(得分:0)

我已经弄明白在指令的范围被ng-if评估为false后,导致回调执行的原因是什么:

该服务正在将指令范围注册到PubSub发布事件,并且一旦指令范围被销毁就不会取消注册它。这意味着那里有一个被破坏范围的提法..​​....

总结一下:在注册PubSub事件时,请务必自行清理!