Trong phạm vi bộ điều khiển chính, tôi đã xác định selectedItem
được đặt thành 'x'. Sau đó, trong phạm vi nhỏ, tôi đã xác định selectedItem
sử dụng ngModel:Thừa kế cho phạm vi trong AngularJS
<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) {}
Khi trang web được tải, các selectedItem
được thiết lập đúng để 'x' như mong đợi. Khi tôi chọn 'y', selectedItem
trong phạm vi CtrlB $ cho 'y' như mong đợi.
Nhưng khi tôi kiểm tra $scope.selectedItem
trong phạm vi CtrlA
(sử dụng batarang của AngularJS), nó cung cấp 'x'.
jsFiddle: Trang http://jsfiddle.net/sudhh/GGKjp/2/
Preview: http://fiddle.jshell.net/sudhh/GGKjp/2/show/light/ (để kiểm tra với angularjs batarang)
Tại sao $scope.selectedItem
trong CtrlA
phạm vi không nhận được cập nhật để 'y'? Giải thích là gì?
Tôi không muốn sử dụng sự kiện hoặc rootScope
để cập nhật selectedItem
trong phạm vi chính (cho mục đích học tập).
Hãy chắc chắn để đọc Stack Overflow câu hỏi * http: //stackoverflow.com/questions/14049480 * Nó cung cấp một cái nhìn tổng quan tốt về thừa kế phạm vi trong AngularJS. – Martijn