在视频
AngularJS MTV Meetup: Best Practices (2012/12/11),Miško解释“..如果你使用ng-model有一个点的地方,如果你没有一个点,你做错了..”
然而,Angular.JS website的第一个例子(基础)似乎与它矛盾。是什么赋予了?自从MTV聚会以来,Angular.JS有了改变,现在它更容易与ng-model?
这个小点在处理范围继承的复杂性时非常重要。
原文链接:https://www.f2er.com/angularjs/146844.htmlegghead.io video “The Dot”有一个非常好的概述,就像这个非常流行的堆栈溢出问题:What are the nuances of scope prototypal / prototypical inheritance in 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”,则链接将保留。
发生这种情况的原因是,子范围使用原型继承来查找值,因此只要它不会在子节点上设置,那么它将延迟到父节点范围。但是,一旦设置,它不再查找父级。
当你使用对象(baz)时,没有任何东西被设置在子作用域上,继承仍然存在。
有关更多详细信息,请查看StackOverflow answer