为什么AngularJS文档不使用模型指令中的点?

前端之家收集整理的这篇文章主要介绍了为什么AngularJS文档不使用模型指令中的点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在视频 AngularJS MTV Meetup: Best Practices (2012/12/11),Miško解释“..如果你使用ng-model有一个点的地方,如果你没有一个点,你做错了..”

然而,Angular.JS website的第一个例子(基础)似乎与它矛盾。是什么赋予了?自从MTV聚会以来,Angular.JS有了改变,现在它更容易与ng-model?

这个小点在处理范围继承的复杂性时非常重要。

egghead.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>

(Play along on a JSFiddle)

首先,如果你启动应用程序,并且输入到父输入,孩子会更新以反映它。

但是,如果编辑子范围,则与父级的连接现在已损坏,并且两者不再同步。另一方面,如果使用ng-model =“baz.bar”,则链接将保留。

发生这种情况的原因是,子范围使用原型继承来查找值,因此只要它不会在子节点上设置,那么它将延迟到父节点范围。但是,一旦设置,它不再查找父级。

当你使用对象(baz)时,没有任何东西被设置在子作用域上,继承仍然存在。

有关更多详细信息,请查看StackOverflow answer

原文链接:https://www.f2er.com/angularjs/146844.html

猜你在找的Angularjs相关文章