让内部指令在外部指令angularjs之前运行

时间:2013-03-02 16:25:06

标签: angularjs angularjs-directive

我有以下html:

<div nag-tabs="tabsOptions">
    <ul class="tabs">
            <li ng-repeat="tab in tabs">{{ tab }}</li>
    </ul>
    <div class="tab_content">
            <div ng-repeat="tabContent in tabsContent">{{ tabContent }}</div>
    </div>
</div>

我遇到的问题是tabs指令在ng-repeat指令之前运行。

在包含nag-tab指令内容的所有指令运行之后,有没有办法让tabs指令运行(ng-repeat或其他可能放在那里的那些)?

2 个答案:

答案 0 :(得分:4)

指令可以在三个不同的时间“运行”,因为指令可以具有编译,预链接和后链接方法。 This plunker包含两个示例HTML结构 - 一个使用ng-repeat,一个不使用 - 并且在3个指令函数中的每一个运行时打印出来。

对于ng-repeat示例,我们看到ng-repeat前后链接函数在nag-tabs后链接后运行。因此,如果您希望在ng-repeat后链接函数运行后使用tabs指令执行某些操作,则必须使用$ timeout(如@charlietfl建议)或$ watch或事件来执行代码后面。

您可以尝试向ng-repeat元素添加checklast指令,当$lasttrue时,该指令可以指示您的制表符指令。信令可以通过事件完成,或者checklast指令可以require您的tabs指令,然后checklast指令可以调用您的tabs指令控制器上的方法。 另请参阅https://stackoverflow.com/a/13906907/215945

请注意,漂亮的傻瓜来自Peter

答案 1 :(得分:0)

你是否控制了tab指令?如果是,则修改其编译阶段以将ng-repeat添加到其子元素。