gpt4 book ai didi

javascript - AngularJS 在指令中继承作用域的最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 05:13:11 25 4
gpt4 key购买 nike

从 Directives 文档中可以看出以这两种方式继承作用域:

@ or @attr - bind a local scope property to the value of DOM attribute. The result is always a string since DOM attributes are strings. If no attr name is specified then the attribute name is assumed to be the same as the local name. Given and widget definition of scope: { localName:'@myAttr' }, then widget scope property localName will reflect the interpolated value of hello {{name}}. As the name attribute changes so will the localName property on the widget scope. The name is read from the parent scope (not component scope).

= or =attr - set up bi-directional binding between a local scope property and the parent scope property of name defined via the value of the attr attribute. If no attr name is specified then the attribute name is assumed to be the same as the local name. Given and widget definition of scope: { localModel:'=myAttr' }, then widget scope property localModel will reflect the value of parentModel on the parent scope. Any changes to parentModel will be reflected in localModel and any changes in localModel will reflect in parentModel.

考虑到我想传递 elementId,它只是一个 id,我可以通过 =elementId 或 @elementId 传递它。

现在,两者中哪一个被认为是最佳实践?如果我使用 @ 并因此使用属性,它将从 DOM 中获取值,这比直接获取值慢吗?

我说的对吗?有什么建议吗?

最佳答案

  • 如果指令需要更改值,请使用 = 获得双向绑定(bind)。
  • 如果您想向阅读您代码的其他人表明您只使用单向绑定(bind),请使用@。
  • 如果您需要同步访问链接函数中的值,请使用 =(请参阅有关 @ 和 $observe 的异步行为的注释 here)。

对于您的情况,@ 似乎是最好的。 (但是,如何在 HTML 元素中使用指令和 elementID 的示例会有所帮助。)

我不知道哪个更慢/更快。

另见 What is the difference between '@' and '=' in directive scope in AngularJS?

关于javascript - AngularJS 在指令中继承作用域的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com