3

我正在尝试在我的自定义元素中添加属性并在我的新元素中使用它,但是很难使用语法。我看过这篇文章,但不太清楚它的用法。如何在创建的回调中声明和使用自定义“标签”属性来呈现它?

<current-date foo="Today is: "></current-date>

<script>
  document.registerElement('current-date', {
    prototype: {
      createdCallback: function() {
        this.innerHTML = this.foo + new Date();
      },
      foo: {
        value: function() {
          alert('foo() called');
        }
      }
    }
  });
</script>

http://jsbin.com/UdOwizU/4/(仅适用于 Google Canary)

4

3 回答 3

1

也许是这样的:

<body>
  <current-date label="Today is: "></current-date>

  <script>
    document.registerElement('current-date', {
      prototype: {
        createdCallback: function() {
          this.foo = {value: function() {
            return this.attributes.getNamedItem("label").value;
          }},
          this.innerHTML = this.foo.value.call(this) + new Date();
        }
      }
    });
  </script>
</body>

http://jsbin.com/ivaWUyAL/3/edit

于 2014-01-28T01:11:01.457 回答
0

也许我误会了你,但你试过使用setAttribute()吗?

我也不能尝试registerElement,但它以“通常”的方式工作:

var el = document.createElement( 'current-date' );
el.setAttribute( 'label', new Date() );
document.body.appendChild( el );

在你的情况下,这应该是这样的:

createdCallback: function() {
    this.innerHTML = this.foo + new Date();
    this.setAttribute( 'label', this.getAttribute( 'label' ) + new Date() );
}
于 2014-01-28T00:09:22.330 回答
0

您可能正在寻找的是attributeChangedCallback,它会让您有机会在设置、删除或修改属性时运行用户代码 --> http://w3c.github.io/webcomponents/spec/custom/#回调类型

于 2014-01-30T04:24:42.737 回答