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

Sha*_*Lin 8 javascript angularjs angular-directive

我按照一些教程来制作角度指令.在隔离范围中,一些教程定义范围如下:

scope: {
  model: '=?',
  data:  '@?' 
}
Run Code Online (Sandbox Code Playgroud)

和一些教程定义范围没有问号,如:

scope: {
  model: '=',
  data:  '@'
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以通过恰当的例子向我解释这些的区别或目的.谢谢.

Dan*_*one 9

&,@=符号用于定义绑定(单向,双向等),孤立的范围对象,因为你已经知道了.下面是如何这一切工作一个非常详尽的教程.

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