当前位置: 首页 > 面试题库 >

为什么AngularJS文档在model指令中不使用点?

拓拔奇
2023-03-14
问题内容

..如果您使用ng-model,则必须在某处有一个点。如果没有点,那么您就在做错误..”

但是,Angular.JS网站中的第一个示例(基础知识)似乎与此矛盾。是什么赋予了?自从MTV聚会以来,Angular.JS是否已更改,因为它现在对ng-
model更宽容了?


问题答案:

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

该egghead.io视频“点”有一个很好的概述,做到这一点非常流行的堆栈溢出的问题:[什么是范围原型/原型继承中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>

(在JSFiddle上玩)

首先,如果您启动了该应用程序,并输入了父项输入,则子项将更新以反映出来。

但是,如果您编辑子范围,则到父范围的连接现在断开,并且两者不再同步。另一方面,如果使用ng-model="baz.bar",则链接将保留。

发生这种情况的原因是,子作用域使用原型继承来查找值,因此,只要从未在子作用域上设置该值,它就将遵循父作用域。但是,一旦设置,它将不再查找父级。

baz相反,当使用对象()时,子作用域上不会设置任何内容,并且继承保持不变。



 类似资料:
  • 问题内容: 根据API文档,伪指令的属性已弃用,因此将来,所有伪指令的行为都将使用当前默认值。 这消除了开发人员替换element指令的element的能力,而没有明显替代此功能的能力。 有关如何使用元素指令和不使用元素指令的示例,请参见此示例。 为什么不推荐使用此有用的属性而不进行替换? 问题答案: 在下一个主要的Angular版本中,将删除用于定义替换其所在元素的指令的标志。此功能具有难以理解

  • 问题内容: 我正在尝试创建一个指令,该指令将创建与创建指令的元素具有相同ng-model的输入字段。 到目前为止,这是我想到的: 的HTML 的JavaScript 但是,我不确定这是处理这种情况的正确方法,并且存在一个错误,即我的控件未使用ng-model target字段的值初始化。 这是上面代码的简称:http ://plnkr.co/edit/IvrDbJ 处理此问题的正确方法是什么? 编

  • 问题内容: 我花了很多时间阅读AngularJS文档和一些教程,对于文档的难懂性,我感到很惊讶。 我有一个简单的,可以回答的问题,对于其他希望使用AngularJS的人也可能有用: 什么是AngularJS指令? 某个地方应该有一个简单,精确的指令定义,但是AngularJS网站提供了这些令人惊讶的无用定义: 在主页上: 指令是AngularJS中可用的独特而强大的功能。指令可让您发明特定于您的应

  • 问题内容: 看到这个jsfiddle:http : //jsfiddle.net/8bENp/66/ 如果您查看JavaScript控制台,将会看到以下内容: 问题是,是当它的类型甚至不应该是一个数字。尽管如此,降价渲染。我可以添加一张支票,但我宁愿治疗根本原因。任何想法? 问题答案: 您的指令中的问题是,在对表达式进行求值之前,角度会触发一次手表。因此,第一次值是。我不认为这是可以预防的,但是A

  • 问题内容: 我刚刚开始使用angularjs,并注意到指令中的表单不会提交。关于如何使表单提交的任何想法? 问题答案: 根据文档: 除非元素具有指定的属性,否则Angular会阻止默认操作(将表单提交到服务器)。

  • 问题内容: 我试图做一个简单的指令来显示名称并允许对其进行更改。当我在名称页上放置多个指令时,它们似乎都共享name属性。我究竟做错了什么? 问题答案: 如前面的答案中所述,AngularJS指令的默认行为是共享它们所包含的范围。此行为通过指令定义对象中的参数进行更改。 您可以在AngularJS文档的此部分中查看scope参数的文档:http : //docs.angularjs.org/api