“=”是什么意思? 在angularJS指令隔离范围声明?

平等之后的问号是否有特殊意义? 即:

scope: {foo: '=?'} 

上面的意思是'不要提出错误,如果'富'不能解决?

是:

'isolate'作用域需要一个对象散列,它定义了从父作用域派生的一组本地作用域属性。 这些本地属性对模板的别名值很有用。 本地定义是本地范围属性到源的散列:

==attr – 在本地作用域属性与通过attr属性值定义的父级作用域属性之间build立双向绑定。 如果没有指定attr名称,则假定属性名称与本地名称相同。 给定<widget my-attr="parentModel">scope: { localModel:'=myAttr' }小部件定义,那么小部件范围属性localModel将反映父范围上的parentModel的值。 对parentModel任何更改localModel将反映在parentModellocalModel任何更改localModel将反映在parentModel如果父级范围属性不存在,则会引发NON_ASSIGNABLE_MODEL_EXPRESSIONexception。 你可以使用=?来避免这种行为 =?attr以便将该属性标记为可选。

它应该触发影响范围属性的每个摘要的预期错误:

 parentSet = parentGet.assign || function() { // reset the change, or we will throw this exception on every $digest lastValue = scope[scopeName] = parentGet(parentScope); throw Error(NON_ASSIGNABLE_MODEL_EXPRESSION + attrs[attrName] + ' (directive: ' + newScopeDirective.name + ')'); }; //... if (parentValue !== scope[scopeName]) { // we are out of sync and need to copy if (parentValue !== lastValue) { // parent changed and it has precedence lastValue = scope[scopeName] = parentValue; } else { // if the parent can be assigned then do so parentSet(parentScope, lastValue = scope[scopeName]); } }