繁体   English   中英

Angular指令加载顺序。

[英]Angular directive loading order.

我有一个包含两个嵌套指令的视图。 内部指令取决于要存在的外部指令。 当我从头开始加载页面时,指令将按预期加载,即,外部在内部之前存在。 但是,当我从页面导航然后返回时,指令加载的顺序相反,即,内部指令先于外部指令加载。 这两个指令都是服装指令。 当我将外部指令改为ng-controller时,问题就解决了。 要执行导航,请使用ui-router。 没有人知道如何解决此问题而不必使用ng-controller作为外部指令吗? 为何ng-controller可以解决问题?

<div outer-directive>
    <inner-directive></inner-directive>
</div>

在不了解特定指令的情况下,您可以看一下这篇有关指令优先级的博客文章

(控制器以不同于指令的周期进行处理,因此将“内部”指令所需的任何“依赖”代码放入控制器中就可以解决您的问题,这是有道理的)。

这是有趣的部分:Angular将遵循嵌套指令的“路径”:

外部指令:编译

内部指令:编译

外部指令:预链接

内部指令:预链接

内部指令:链接后

外部指令:后链接

链接的博客文章解释了“为什么”,但是该处理顺序解释了您在初始页面加载(针对指令运行编译)和页面返回情况(其中指令已经编译并且我们只需要链接)之间的差异。

同样,在不了解您的指令的情况下,也许您需要将相关的外部指令代码重新定位到预链接(而不是链接)中,以便首先对其进行处理?

通过将Link对象分解为:

Link: {
    pre: function(){
    }, 
    post: function() {
    }
}

仍然需要帮助,[这是一个不错的帖子]( http://www.undefinednull.com/2014/07/07/practical-guide-to-prelink-postlink-and-controller-methods-of-angular-directives/ )在分解链接到前/后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM