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

时间:2015-07-23 13:47:56

标签: javascript angularjs angular-directive

我按照一些教程来创建角度指令。在隔离范围中,一些教程定义了这样的范围:

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

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

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

有人可以用例子向我解释这些的区别或目的吗?谢谢。

1 个答案:

答案 0 :(得分:8)

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

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