【问题标题】:AngularJS : What is the usage of '=?' in scope of angular directiveAngularJS:'='的用法是什么?在角度指令的范围内
【发布时间】:2023-03-21 00:29:02
【问题描述】:

我见过开发人员使用 '=?'在指令的角度范围内。谁能解释一下它的用法。

【问题讨论】:

  • 用于双向绑定
  • 这是示例链接umur.io/…
  • =? 表示可选的双向绑定。如果没有?,如果您没有在 DOM 中提供属性,则会引发异常。
  • 所以?可以赋予任何其他指令范围吗?前任:- '@?'和'&?'
  • @ste2425 你能提供你的答案的文档/来源吗?

标签: angularjs angularjs-directive


【解决方案1】:

==attr - 在本地范围属性和通过attr 属性值定义的名称的父范围属性之间设置双向绑定。如果未指定 attr 名称,则假定属性名称与本地名称相同。给定<widget my-attr="parentModel">scope: { localModel:'=myAttr' } 的小部件定义,那么小部件范围属性localModel 将反映父范围上parentModel 的值。对parentModel 的任何更改都将反映在localModel 中,localModel 中的任何更改都将反映在parentModel 中。如果父范围属性不存在,它将抛出 NON_ASSIGNABLE_MODEL_EXPRESSION 异常。您可以使用=?=?attr 避免此行为,以便将该属性标记为可选。如果您想浅层观察更改(即 $watchCollection 而不是 $watch),您可以使用 =*=*attr=*?=*?attr,如果该属性是可选的)。

Source (CTRL+F, "=?")

【讨论】:

  • 我试图复制异常,但没有看到抛出错误。相反,值集只是空。 JSFiddle Sample
  • 这是一个示例 Plunker,您会在其中收到 NON_ASSIGNABLE_MODEL_EXPRESSION 错误。
  • 根据您的示例,如果我添加 selectModel: "=?"在 child1 指令范围内,它应该仍然有效。对吗?
  • @Shashi 1)。这不是我的例子,我只是快速地用谷歌搜索了这个错误,并给了你第一个有这个错误的例子。 2)。我只给了你 Angular 的相关信息。 - 这个=? 表达对我来说也是新的,我对此一无所知。
  • @Shashi 我找到了另一个post,里面有很多关于=? 的信息,希望能更多地回答你的问题。
猜你喜欢
  • 2014-03-28
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2011-07-02
相关资源
最近更新 更多