何时以及为何使用 &?、=?、@?在 AngularJS 中?

Posted

技术标签:

【中文标题】何时以及为何使用 &?、=?、@?在 AngularJS 中?【英文标题】:When and why to use &?, =?, @? in AngularJS? 【发布时间】:2015-10-13 20:58:39 【问题描述】:

我按照一些教程来创建角度指令。在隔离作用域中,一些教程定义的作用域是这样的:

scope: 
  model: '=?',
  data:  '@?' 

同时,一些教程定义了没有问号的范围,如下所示:

scope: 
  model: '=',
  data:  '@'

谁能用例子解释一下这些的区别或目的?谢谢。

【问题讨论】:

【参考方案1】:

如您所知,&@= 符号用于定义隔离作用域对象的绑定(单向、双向等)。 Here is a pretty thorough tutorial on how all this works.

? 符号用于表示独立作用域绑定所引用的父作用域属性是可选。这意味着如果由于某种原因父范围属性不存在,那么您的应用程序将继续运行而不会引发 NON_ASSIGNABLE_MODEL_EXPRESSION 异常。

【讨论】:

我理解 &、@ 和 = 之间的区别,您对可选的解释很有意义。您能否提供一个孤立范围具有可选属性的示例并解释为什么是选项? 当然,here is a plunkr showing the functionality without the optional flag. 要查看它与可选标志的行为方式,添加它,您会看到它只是返回 404 而不是抛出异常。

以上是关于何时以及为何使用 &?、=?、@?在 AngularJS 中?的主要内容,如果未能解决你的问题,请参考以下文章

何时以及为何托管 WCF 服务?

何时以及为何在堆 C++ 上声明成员变量

何时以及为何调用 updateConstraints?

XML 何时以及为何优于 CSV? [关闭]

执行策略之间的区别以及何时使用它们

何时在 JavaScript 中使用双非 (!!) 运算符