Вот два фрагмента кода:В чем разница с использованием «точки» в angularjs?
<input type="text" ng-model="data.message">
<div>Hello, {{data.message}}</div>
<div ng-controller="firstCtrl">
<input type="text" ng-model="data.message">
<div>Hello, {{data.message}}</div>
</div>
<div ng-controller="secondCtrl">
<input type="text" ng-model="data.message">
<div>Hello, {{data.message}}</div>
</div>
и
<input type="text" ng-model="msg">
<div>Hello, {{msg}}</div>
<div ng-controller="firstCtrl">
<input type="text" ng-model="msg">
<div>Hello, {{msg}}</div>
</div>
<div ng-controller="secondCtrl">
<input type="text" ng-model="msg">
<div>Hello, {{msg}}</div>
</div>
ng-controller
здесь создает новые возможности, так что сфера firstCtrl
и secondCtrl
прототипически наследует от корня объема в обоих случаях. Таким образом, в идеале, когда свойство дочерних элементов перезаписывается, shadows
унаследованное значение от родителя, а значение в родительском состоянии остается таким же. Тогда почему два фрагмента работают по-другому?
Кроме того, почему в первом фрагменте, изменяя значение в firstCtrl
, также изменяется значение в корневой области?
Plnkr: http://plnkr.co/edit/x4LH4JAOMr9I8bCcSO8Y?p=preview
Это должно ответить на все ваши вопросы. Http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs?rq=1 – Chandermani
Объем корня изменено, потому что firstCtrl прототипно наследует от корневой области. Поскольку firstCtrl модифицирует свойство объекта, он проверяет цепочку прототипов и находит объект в $ rootScope, поэтому он там изменяется. –
Спасибо! Два замечаний выше ясны мои сомнения! – user1624400