私は1.5について初めてで、片方向データフローのベストプラクティスを学んでいます。私はこのjsfiddleから離れることになり、特に1つの行動について本当に混乱しています。角度1.5 - 片方向のデータフロー - 親子子プリミティブの値を最初に更新します。
データが親から子に流れ込み、片方向にバインドされていることを理解しています。つまり、子の変更は親に影響しません。この問題は常に問題のオブジェクトに当てはまると思われますが、プリミティブの場合、一方向データフローは最初に発生しますが、プリミティブ値は分離コンポーネントの値更新関数で定義されているものと同じです(10)。ですから、次の操作を実行した場合:
- クリックすると、「親の値の変更」、子供はデータを受信し、 が更新されます。 10へ
- クリックして「変更アイソ値」分離株/子供プリミティブ 値が変化すると、親は
- 影響はありません「の変更親 値」を経由して親の値を更新した後、再び、分離株プリミティブ値が10であることを確認 永遠に、オブジェクトが正しく更新されます。それはなぜですか、また、角度1.5の片方向のデータフローのベストプラクティスを実行している最中に、子が更新された のプリミティブ値をどのように受け取ることができますか?
https://jsfiddle.net/toddmotto/wauana12/
this.updateValues = function() {
this.prim = 10;
this.obj = {
john: {
age: 35,
location: 'Unknown'
}
};
};
更新:親コントローラ で ので、内部this.updateValuesは私が
this.somePrimitive = Math.random();
にthis.somePrimitive = 33
を変更し、それは私が期待される道を働いた、Iどうして分かりにくいのか、理解を助けることに感謝しています...
アップデート2:私は、親コントローラupdateValues機能は、実際にプリミティブに変更を加えていないので、それはあると思うので、子供が更新を認識するための方法はありません。上記の更新はプリミティブに変更を強制します。オブジェクトは参照されるため、常に変更されます。
しかし、私はここでデータバインディングが失われ、壊れてしまった(React ftw)のような気がします。親の$ watchに頼るのではなく、手動で子を更新する必要はありますか?