1

私は Angular を学習中ですが、ちょっとした問題に遭遇しました。JavaScript オブジェクト内のさまざまなレベルを表す一連のディレクティブを作成しようとしています。オブジェクトには、モデルの他の部分の状態に依存するさまざまなプロパティが含まれています。たとえば、サブ プロパティの 1 つがエラー状態にある場合、親もエラー状態になります。非常に単純化された例がHEREにあります。どんな助けでも大歓迎です。特に、誰かが例の何が問題なのかを説明し、Angular 設計の高レベルのベスト プラクティスについてアドバイスを提供できる場合。ありがとう。

4

1 に答える 1

1

あなたの例の問題は、ng-repeat によって作成された新しいスコープに関係しています。非常に詳細な説明についてはこちらを参照してください。

アイテム/反復ごとに、ng-repeat は新しいスコープを作成します。これは典型的には親スコープから継承しますが、アイテムの値を新しい子スコープの新しいプロパティにも割り当てます

item がプリミティブの場合、基本的に値のコピーが新しい子スコープ プロパティに割り当てられます。子スコープ プロパティの値を変更しても (つまり、ng-model を使用して) 、親スコープが参照する配列は変更されません。

これは単純な解決策では紛らわしい問題です: バインド可能な値をプリミティブの代わりにオブジェクトにします。

あなたの例では、置き換えます

scope.innerValues = [1,2,3];

scope.innerValues = [{value: 1}, {value:2}, {value:3}];

動作するように変更された例を次に示します: http://plnkr.co/edit/IXKk75721MHNsI0zeBEG?p=preview

于 2014-05-21T03:01:39.223 に答える