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).
 
     
    