Ответ 1
Эта маленькая точка очень важна при рассмотрении сложностей наследования сферы.
egghead.io видео "The Dot" имеет действительно хороший обзор, так же как и этот очень популярный вопрос: Каковы нюансы объема прототипа/прототипного наследования в AngularJS?
Я попытаюсь суммировать его здесь:
Angular.js использует область наследования, чтобы позволить дочерней области (например, дочернему контроллеру) видеть свойства родительской области. Итак, скажем, у вас была настройка вроде:
<div ng-controller="ParentCtrl">
<input type="text" ng-model="foo"/>
<div ng-controller="ChildCtrl">
<input type="text" ng-model="foo"/>
</div>
</div>
Сначала, если вы запустили приложение и набрали его в родительский ввод, он обновится, чтобы отразить его.
Однако, если вы редактируете область дочернего элемента, соединение с родителем теперь прерывается, а два больше не синхронизируются. С другой стороны, если вы используете ng-model="baz.bar"
, ссылка останется.
Причина, по которой это происходит, заключается в том, что область child использует прототипическое наследование для поиска значения, поэтому, пока оно никогда не будет установлено на дочернем, оно будет отложено до родительской области. Но, как только он установлен, он больше не ищет родителя.
Если вы используете объект (baz
) вместо этого, ничто никогда не будет установлено в области дочернего объекта, и наследование останется.
Подробнее о подробностях см. fooobar.com/questions/512/...