我有一个指令,用于计算从作为id传递给属性的元素的窗口顶部的高度和距离。我遇到的问题是我有几个这样的指令在运行(在附加到同一指令的元素上),并且我遇到了一个竞争条件,其中一些在DOM中较低的指令是在那些因任何原因而更高的那些之前跑。
有没有办法可以让底层的人通过承诺或其他什么来等待更高的?如果是这样,我将如何实现?有没有更好的方法来处理这个?
答案 0 :(得分:0)
如果你想让你的指令按降序执行代码(首先是DOM中的高级代码),你应该将这些代码放在你的指令controller
或{{1}中方法。
默认preLink
方法是link
的快捷方式,按升序执行。
话虽如此,我不知道你的代码,所以我只是在猜测,但听起来服务比指令更合适,除非你直接完成的计算是直接完成的在该指令元素中,在这种情况下使用postLink
就足够了。但是你可能不应该将$element
或选择器传递给指令。