gpt4 book ai didi

html - 何时使用 [name] 与 [attr.name]?

转载 作者:行者123 更新时间:2023-12-03 20:26:25 25 4
gpt4 key购买 nike

有谁知道你为什么可以使用 [id]你必须使用[attr.contenteditable]作为Angular中的属性绑定(bind)?

我研究了一段时间,我找不到答案。

为什么有些html原生属性可以只用名字修改,而有些则需要通过attr属性修改?

最佳答案

(此答案假设您绑定(bind)到 HTMLElement 而不是应用内模型对象。鉴于 [attr.{name}] -syntax is only supported 用于 DOM HTMLElement 对象,此假设应该成立)

使用 DOM 时,某些元素的 DOM 接口(interface)为某些 HTML 属性定义了一流/原生属性(如在 JavaScript 属性中)。

例如,HTMLElement DOM 接口(interface)定义了一级属性 id ,这就是为什么您可以直接在绑定(bind)表达式中使用它:[id] .同样的 HTMLAnchorElement暴露 href属性(property)。

(我注意到 contenteditable is a a defined DOM interface property 在 WHATWG HTML LS 中,但不是 W3C 的 DOM 规范,很有趣...)

但是,任意(超现代、用户定义和过时的)HTML 属性不会通过 DOM 接口(interface)公开,因此只能通过 attributes 访问。 DOM 中的集合。 Angular 要求您使用 [attr.{name}]用于非 DOM 属性,以便它知道必须使用 attributes集合而不是假设它可以直接绑定(bind)到 DOM 属性。

要更直接地回答您的问题:

when use [name] vs [attr.name]?



遵循此流程图:
  • 我作为 DOM 接口(interface)属性公开后的值是什么?
  • 是的:
  • 使用[propertyName]
  • 不:
  • 我在没有相应 DOM 接口(interface)属性的 HTML 属性之后的值?
  • 是:使用 [attr.{attributeName}]
  • 不:辞掉你的工作,让其他人来处理快速发展的 JavaScript 开发者生态系统的情绪和精神压力。
  • 关于html - 何时使用 [name] 与 [attr.name]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60375207/

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