10

ビュー内からの入力のバインドに問題があります。コントローラースコープにバインドすると思っていたのですが、子スコープにバインドしているようで、上記で更新されていません。

他のアイテムは、ng-repeat 内にある場合、期待どおりにバインドされます (理由はわかりません)。

例を次に示します:
http://jsfiddle.net/hMpsB/1/

入力が ng-repeat 内にない場合、入力を正しいスコープにバインドする最良の方法は何ですか?

4

1 に答える 1

16

あなたの例$scope.testでは、次のようなプリミティブ型ではなく、オブジェクトにバインドする方がうまくいきます。

$scope.test = { val: "test value" };

実際の例については、このフィドルを見ることができます。

ngViewで作成される子スコープは値をコピーします。オリジナル$scope.testはプリミティブ文字列であるため、親値へのリンクがないため、入力は子スコープのコピーを変更します。オブジェクトにバインドする場合、子スコープにはオブジェクト参照のコピーがありますが、最終的にはオブジェクトの同じインスタンスを変更します。

複数のコントローラー間でデータを永続化するサービスの作成に関する詳細については、この質問をご覧ください (質問と少し似ています)。

この回答$parentで説明されているように使用することもできますが、マークは文書化されておらず、別の子スコープがどこかに導入された場合に面倒になる可能性があると述べています。

于 2012-10-08T21:39:03.763 に答える