2012-10-08 8 views
9

ビュー内から入力をバインドする際に問題があります。私はそれがコントローラーの範囲にバインドすると思ったが、それは子スコープにバインドされているようだので、上に更新されていない。AngularJS:ビュー内で予想される範囲に入力がバインドされていません。

他のアイテムは、ng-repeatの中にいると期待したようにバインドされます(理由はわかりません)。ここで

は例です:
http://jsfiddle.net/hMpsB/1/

それはNGリピート内ではない場合、正しいスコープへの入力をバインドするための最良の方法は何ですか?

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

あなたが働い例えばthis fiddleを見ることができます:あなたの代わりにこのようなプリミティブ型のオブジェクトへのあなたの$scope.testを結合、より良い運を持っていますあなたの例では

答えて

16

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

複数のコントローラ間でデータを保持するサービスを作成する方法の詳細は、this questionを参照してください(質問に少し似ています)。

this answerに記載されているように$parentを調べることもできますが、マークとしては文書化されていないと言われています。別の子スコープがどこかに導入されると乱雑になるかもしれません。

関連する問題