7

私はAngularjsをいじっていますが、おそらくそれを悪用しています。私はセミコロンを使用して、次のような角度式にいくつかのステートメントを含めています( jsFiddle ):

<tr ng-repeat="i in [1, 2, 3, 4]">
  <td>i = {{ m = k; k = j; j = i + 1; i}}</td>
  <td>j = {{j}}</td>
  <td>k = {{k}}</td>
  <td>m = {{m}}</td>
</tr>

最初は、計算前のk値になると思っていましたが、どうやらこのようには機能しません。結果は次のとおりです。ji+1

i = 1   j = 2   k = 2   m = 2
i = 2   j = 3   k = 3   m = 3
i = 3   j = 4   k = 4   m = 4
i = 4   j = 5   k = 5   m = 5

したがって、明らかjに tokktoに代入することmは、値がコピーされることを意味するのではなく、これらの名前が結合されることを意味します。私はそれを理解することができます。kしかし、 ( jsFiddle )の値を表示する行を削除すると、奇妙なことが起こります。

<tr ng-repeat="i in [1, 2, 3, 4]">
  <td>i = {{ m = k; k = j; j = i + 1; i}}</td>
  <td>j = {{j}}</td>
  <td>m = {{m}}</td>
</tr>

私は得ています:

i = 1   j = 2   m =
i = 2   j = 3   m =
i = 3   j = 4   m =
i = 4   j = 5   m =

つまり、( を介して)mにバインドされているにもかかわらず、 には値が含まれていません。それ自体が評価されていない可能性があります。jkk

私の質問は、AngularJS のバグではありませんか? k直接表示されなくても、バインディングのチェーン内にある場合は必ず評価する必要があります。それとも私は何かを誤解していますか?

おそらく AngularJS の慣用的な使用方法ではないことは承知していますが、式エンジンを本当に理解したいのですが、この動作を説明することはできません。

4

1 に答える 1