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

When and why to use &?, =?, @? in AngularJS?

我按照一些教程创建了 angular 指令。在 isolate 作用域中,一些教程这样定义作用域:

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

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

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

任何人都可以通过示例向我解释这些区别或目的吗?谢谢。

&@= 符号用于定义独立范围对象的绑定(单向、双向等),正如您已经知道。 Here is a pretty thorough tutorial on how all this works.

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