阅读ng-book,有一部分建议在使用$scope
时,尝试将属性包装在另一个属性中,如下所示:
$scope.model.attribute
代替$scope.attribute
根据作者的说法,如果我们有嵌套控制器,就好像我们不这样做那样,如果我们要更改子$ scope中的值,它将不会取决于父级。
我认为我不明白为什么这有必要?原型继承方面$scope.model.attribute
和$scope.attribute
之间有什么区别?
答案 0 :(得分:3)
请看这个用来说明这个问题的小提琴。
http://jsfiddle.net/nicolasmoise/X9KYU/4/
HTML:
<body ng-app="myApp">
<div ng-controller="parentCtrl">
<!--{{message}}<input type="text" ng-model="message">-->
{{obj.message}}<input type="text" ng-model="obj.message">
<div ng-controller="childCtrl">
<!--{{message}}<input type="text" ng-model="message">-->
{{obj.message}}<input type="text" ng-model="obj.message">
</div>
</div>
</body>
控制器:
//Switch between commented/uncommented
angular.module('myApp', [])
.controller('parentCtrl', ['$scope', function($scope){
//$scope.message="Hello";
$scope.obj={message:"Hello"}
}])
.controller('childCtrl', ['$scope', function($scope){
}]);
如果您使用“原始”($scope.message
),则从子控制器编辑它不会更改父控制器中的值。
正如你所说,这一切都与Javascript的原型继承有关