2

私は次の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ディレクティブの実行の内容を含むすべてのディレクティブ(ng-repeatまたはそこに配置される可能性のあるその他のもの)の後にtabsディレクティブを実行する方法はありますか?

4

2 に答える 2

4

ディレクティブにはコンパイル、プレリンク、ポストリンクの各メソッドを含めることができるため、ディレクティブは3つの異なる時間に「実行」できます。 このプランカーには、2つのサンプルHTML構造が含まれています。1つはng-repeatを使用し、もう1つは使用しません。3つのディレクティブ関数のそれぞれが実行されると出力されます。

ng-repeatの例では、ng-repeatpre-およびpost-link関数がnag-tabspost-linkの後に実行されていることがわかります。したがって、ng-repeat post-link関数の実行後にtabsディレクティブに何かを実行させたい場合は、コードを実行するために$ timeout(@charlietflの提案など)または$ watch、あるいはイベントを使用する必要があります。後で。

ng-repeat要素にディレクティブを追加してみてください。これは、がでchecklastあるときにtabsディレクティブに信号を送ることができます。シグナリングはイベントを介して実行するか、checklastディレクティブでtabsディレクティブを実行してから、checklastディレクティブでtabsディレクティブのコントローラーのメソッドを呼び出すことができます。https://stackoverflow.com/a/13906907/215945も参照してください。$lasttruerequire

気の利いたプランカーはピーターから来たことに注意してください。

于 2013-03-02T21:27:34.657 に答える
0

tabディレクティブを制御しますか?その場合は、コンパイルフェーズを変更して、子要素にng-repeatを追加します。

于 2013-03-05T01:02:01.573 に答える