0

コードを確認するには、 plnkrを参照してください。

私は本当にAngularJSコンポーネントが初めてです。私はまったく同じ binding を持つ 2 つの単純な AngularJS コンポーネントを作成します。

 bindings: { value:'@', field:'@', object: '<', callback: '&' }   

によって Javascript オブジェクトをコンポーネントに渡しますobjectfieldは、JS オブジェクトのプロパティの名前を指定します。最後に、valueJS オブジェクトのプロパティの新しい値を参照します。

object[field] = value

コンポーネントがそのコントローラーで を複製しない場合、object一方向バインディングは機能しません ( onewaybindingfailplnkr のコンポーネントを参照してください)。objectただし、コンポーネントのコントローラーを複製することで、すべて問題ありません。

この動作が予想されることを知りたいですか?はいの場合、なぜですか?または私は何かが欠けていますか?

ご協力いただきありがとうございます。

4

1 に答える 1

3

この動作は予期されたものです。「<」で一方向バインディングを示すことは、角度がコンポーネント側の変更を監視しないことを意味しますが、コンポーネント側でオブジェクトを変更すると、元のオブジェクトは引き続き変更されます。これは、こちらの公式角度ドキュメントにも記載されています。

したがって、作業が必要な場合は、オブジェクトのコピーを作成することをお勧めします。親オブジェクトを変更するには、コールバック関数を使用することをお勧めします。これは、公式の角度ドキュメントでも詳しく説明されています。

于 2016-09-28T14:45:11.643 に答える