当使用Web组件中的自定义HTML元素时,我是否仍然应该使用前缀 data
来命名自定义属性?
例如:
<!-- Should form be data-form? -->
<my-button form="foo">click me</my-button>
当使用Web组件中的自定义HTML元素时,我是否仍然应该使用前缀 data
来命名自定义属性?
例如:
<!-- Should form be data-form? -->
<my-button form="foo">click me</my-button>
my-button
组件从HTMLButtonElement
继承,表单属性将具有预定义的含义,即使在我的自定义元素中也是如此。这样正确吗? - Ben Aston通常情况下,自定义元素和预定义元素之间没有区别。您可以使用document.createElement
创建所需的元素,并使用document.registerElement
进行注册。结果如下:
console.log(document.createElement('my-button').constructor);
//⇒ function HTMLElement() { [native code] }
console.log(document.registerElement('my-button'));
//⇒ function my-button() { [native code] }
console.log(document.createElement('my-button').constructor);
//⇒ function my-button() { [native code] }
如您所见,一旦注册,该元素就会被赋予自己的构造函数。这为组件以其自己的方式行事提供了能力。但是:
console.log(document.createElement('my-button').__proto__.__proto__);
//⇒ HTMLElement
仍然是一个好的旧式纯粹的HTMLElement
。因此,属性命名规则没有改变。
请注意,像polymer这样的库可能会添加额外的属性处理;以上内容仅适用于纯web组件。