首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs多次使用相同的指令作为元素执行顺序

Angularjs多次使用相同的指令作为元素执行顺序
EN

Stack Overflow用户
提问于 2017-11-16 17:23:27
回答 1查看 340关注 0票数 1

我在视图中多次使用指令作为元素。

此指令的执行不是从父级开始的。它首先执行子指令,然后执行父指令。因此,当parent最终执行时,通过编译它,childs将被执行两次。

代码如下:

代码语言:javascript
复制
<custom-directive dir-type="1">
   <custom-directive dir-type="2"></custom-directive>
   <custom-directive dir-type="3"></custom-directive>
   <custom-directive dir-type="4"></custom-directive>
</custom-directive>

在这里,类型1指令在所有子级执行完成后开始执行。因此,当父指令类型1执行时,我编译它是自定义的html (比如uib-set)。所以这些子指令也会再次编译。

所以请告诉我怎样才能先执行parent指令,然后再执行childs指令…

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 18:01:16

它看起来不是很漂亮,但可以通过使用以下命令轻松解决:

代码语言:javascript
复制
<custom-directive dir-type="1" ng-init="myTurn = true">
   <custom-directive dir-type="2" ng-if="myTurn"></custom-directive>
   <custom-directive dir-type="3" ng-if="myTurn"></custom-directive>
   <custom-directive dir-type="4" ng-if="myTurn"></custom-directive>
</custom-directive>

现在,在父指令被编译和准备好之后,将触发/编译子指令。

然而,我认为这可以通过使用transclusion来解决。

也许您可以尝试将以下内容添加到指令中:

代码语言:javascript
复制
app.directive('customDirective', function() {
    return {
        //
        transclude: true,
        // 
    }
});

通过使用转置,您可以“告诉”父元素:“嘿,您有子元素”。因此Angular知道子元素属于父元素,它们将(我认为)等待父元素被编译。

如果此转换有效,请不要使用第一种解决方案。最好避免使用ng-init:它会使调试变得更加困难。

Documentation on transclusion

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47325822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档