In a parent controller scope, I have defined selectedItem
which is set to 'x'. Then in the child scope, I have defined selectedItem
using 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) {}
When the page is loaded, the selectedItem
is properly set to 'x' as expected. When I select 'y', selectedItem
in CtrlB $scope gives 'y' as expected.
But when I inspect $scope.selectedItem
in CtrlA
scope (using AngularJS's batarang), it gives 'x' .
jsFiddle: http://jsfiddle.net/sudhh/GGKjp/2/
Preview page: http://fiddle.jshell.net/sudhh/GGKjp/2/show/light/ (for inspecting with angularjs batarang)
Why is $scope.selectedItem
in CtrlA
scope not getting updated to 'y'? What is the explanation?
I prefer not to use events or rootScope
to update selectedItem
in parent scope (for learning purposes).