Ta mała kropka jest bardzo ważne, gdy mamy do czynienia ze złożonością zakresu dziedziczenia.
egghead.io video "The Dot" ma naprawdę dobry przegląd, jak robi to bardzo popularny przepełnienia stosu pytanie: What are the nuances of scope prototypal/prototypical inheritance in AngularJS?
postaram się go streścić tutaj:
angularjs używa zakresu dziedziczenia, aby umożliwić dziecku zakresu (taki jak kontroler podrzędny), aby zobaczyć właściwości zakresu nadrzędnego. Więc powiedzmy, że miał konfigurację takiego:
<div ng-controller="ParentCtrl">
<input type="text" ng-model="foo"/>
<div ng-controller="ChildCtrl">
<input type="text" ng-model="foo"/>
</div>
</div>
(Play along on a JSFiddle)
Początkowo, jeśli rozpoczął aplikację, i wpisany do wejścia nadrzędnego, dziecko będzie zaktualizować go do refleksji.
Jednak w przypadku edycji zakresu podrzędnego połączenie z rodzicem jest teraz zepsute, a dwa z nich nie są już synchronizowane. Z drugiej strony, jeśli użyjesz ng-model="baz.bar"
, link pozostanie.
Przyczyną takiego działania jest to, że zakres podrzędny korzysta z prototypowego dziedziczenia w celu sprawdzenia wartości, tak długo, jak długo nie zostanie ustawiony na potomku, wówczas będzie odraczał zakres nadrzędny. Ale po jej ustawieniu nie sprawdza już rodzica.
Jeśli zamiast tego zostanie użyty obiekt (baz
), nic nie zostanie ustawione w zakresie podrzędnym, a dziedziczenie pozostanie.
Więcej szczegółów pogłębionych, sprawdź StackOverflow answer
Osobiście uważam, że to bardziej przypomina problem filozofii dotyczący modelowania systemu. Niektórzy używają '$ scope' jako modelu widoku, a inni nie. Jest to kwestia preferencji. – yuxhuang
Zobacz http: // stackoverflow.com/questions/15623698/directive-isolate-scope-with-ng-repeat-scope/15645354 # 15645354 – yanhan