2

実行例:

http://jsbin.com/secuz/5/edit?html,js,出力

詳細

上記の失敗は、Angular ディレクティブが処理される順序に関する私の仮定と矛盾しています。外側のディレクティブが最初に実行され、次に実行が内側に伝播することが期待されます。

ng-ifこの評価の乱れはよりも優先度が高いためと考えてng-showよろしいでしょうか? もしそうなら、2 つのディレクティブが同じ要素にある場合にのみ、優先順位を考慮すべきではないでしょうか?

主な質問

実行が常に外部から実行されるようにするにはどうすればよいですか? 使用するすべてのディレクティブに同じ優先度を与える必要がありますか?

編集:

2 つの追加シナリオを試しました:

  • 両方がng-ifs の場合、予想どおり、伝播は外側から内側に発生します。

[[ '1 if', true ], [ '2 if', true ], [ '1 if', true ], [ '2 if', true ]]

  • ただし、2 つng-showの s は直感に反する動作を示します。

[[ '2 show', true ], [ '1 show', true ], [ '2 show', true ], [ '1 show', true ]]

4

1 に答える 1

2

コンパイルには、次の 3 つのコールバック バインド可能な手順が含まれます。

  • compile
  • pre-link
  • post-link

詳細はこちら

ng-show と ng-if がどこで動作するかはわかりませんが、きっとわかるはずです。

ng-show と ng-if がポストリンクでテストしている動作を設定した場合、実際には逆の順序で実行され、最下位の要素から上って戻ってくるので、これはあなたの発見を説明するでしょう.

于 2014-08-07T06:38:18.863 に答える