在父控制器范围内,我已定义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”。
但是当我$scope.selectedItem
在CtrlA
范围内检查时(使用 AngularJS 的batarang),它给出了 'x' 。
jsFiddle:http: //jsfiddle.net/sudhh/GGKjp/2/
预览页面:http : //fiddle.jshell.net/sudhh/GGKjp/2/show/light/(用于使用 angularjs batarang 进行检查)
为什么范围$scope.selectedItem
内CtrlA
没有更新为“y”?解释是什么?
我不喜欢在父范围内使用事件或rootScope
更新selectedItem
(出于学习目的)。