親コントローラーのスコープで、selectedItem
「x」に設定されているものを定義しました。次に、子スコープで、selectedItem
ngModel を使用して定義しました。
<div ng-app>
<div ng-controller="CtrlA">
<div ng-controller="CtrlB">
<select ng-model="selectedItem" ng-options="item for item in items">
</select>
</div>
</div>
</div>
function CtrlA($scope) {
$scope.selectedItem = 'x';
$scope.items = ['x', 'y'];
}
function CtrlB($scope) {}
ページが読み込まれると、selectedItem
期待どおりに 'x' に正しく設定されます。「y」を選択するとselectedItem
、CtrlB $scope で期待どおり「y」が返されます。
しかし、(AngularJSのbatarangを使用して)スコープ内で検査すると、 'x' が得られます$scope.selectedItem
。CtrlA
jsFiddle: http://jsfiddle.net/sudhh/GGKjp/2/
プレビュー ページ: http://fiddle.jshell.net/sudhh/GGKjp/2/show/light/ (angularjs バットランでの検査用)
$scope.selectedItem
範囲内CtrlA
が「y」に更新されないのはなぜですか? 説明は何ですか?
イベントを使用したり、親スコープでrootScope
更新selectedItem
したりしないことを好みます (学習目的で)。