私は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
値になると思っていましたが、どうやらこのようには機能しません。結果は次のとおりです。j
i+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
に tok
とk
toに代入すること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
にバインドされているにもかかわらず、 には値が含まれていません。それ自体が評価されていない可能性があります。j
k
k
私の質問は、AngularJS のバグではありませんか? k
直接表示されなくても、バインディングのチェーン内にある場合は必ず評価する必要があります。それとも私は何かを誤解していますか?
おそらく AngularJS の慣用的な使用方法ではないことは承知していますが、式エンジンを本当に理解したいのですが、この動作を説明することはできません。