指令的竞争条件

时间:2015-05-14 01:00:01

标签: javascript angularjs angularjs-directive angularjs-service angular-promise

我有一个指令,用于计算从作为id传递给属性的元素的窗口顶部的高度和距离。我遇到的问题是我有几个这样的指令在运行(在附加到同一指令的元素上),并且我遇到了一个竞争条件,其中一些在DOM中较低的指令是在那些因任何原因而更高的那些之前跑。

有没有办法可以让底层的人通过承诺或其他什么来等待更高的?如果是这样,我将如何实现?有没有更好的方法来处理这个?

1 个答案:

答案 0 :(得分:0)

如果你想让你的指令按降序执行代码(首先是DOM中的高级代码),你应该将这些代码放在你的指令controller或{{1}中方法。

默认preLink方法是link的快捷方式,按升序执行。

话虽如此,我不知道你的代码,所以我只是在猜测,但听起来服务比指令更合适,除非你直接完成的计算是直接完成的在该指令元素中,在这种情况下使用postLink就足够了。但是你可能不应该将$element或选择器传递给指令。