我的页面上有一个角度指令,在ng-if。
我有一个服务,它公开一个接收回调作为参数的函数。我们将此函数称为functionX。
当ng-if表达式的计算结果为true时,我的指令会调用functionX,并向它发送一个回调,以便在将来的某个时刻执行。
现在,问题是:如果我的ng-if表达式现在变为false,那么服务仍会执行我发送的回调......
任何想法如何处理这个问题?
答案 0 :(得分:0)
你可以在一个promise中包装functionX并在解析后的promise上使用.then()方法来执行以前的回调函数吗?
这将允许您在指令内执行,而不是在服务中执行。
我想这取决于功能正在做什么,但这样的声音可能是一个潜在的解决方案。
答案 1 :(得分:0)
我已经弄明白在指令的范围被ng-if评估为false后,导致回调执行的原因是什么:
该服务正在将指令范围注册到PubSub发布事件,并且一旦指令范围被销毁就不会取消注册它。这意味着那里有一个被破坏范围的提法......
总结一下:在注册PubSub事件时,请务必自行清理!