获取聚合物发布的属性列表

时间:2014-08-06 21:45:57

标签: javascript polymer web-component

有没有办法获取聚合物组件中定义的所有published properties的列表? (例如,获取组件公共API的可用属性)

<polymer-element name="sample-component"
                 attributes="foo1 foo2" bar="10">
   /* ... */
</polymer-element>

<sample-component foo1="5"></sample-component>


document.querySellector('sample-component').attributes;
// returns bar and foo1 (which have a value assigned to them)
// but I want to get foo1 and foo2

2 个答案:

答案 0 :(得分:3)

最好使用element.publish来获取元素的已发布属性列表。 (在聚合物1.0 element.properties中也是如此)。

element.getAttribute('attributes)不会包含publish block中设置的发布属性。

答案 1 :(得分:1)

您可以通过polymer-element属性访问元素定义(即element本身)。所以

document.querySelector('sample-component')
  .element.getAttribute('attributes')

给你'foo1 foo2'(顺便说一下,你可以简单地写一个元素this.element。)

请注意,这仅在Polymer注册并处理完所有元素后才有效,因此根据您要使用此语句的位置,您可能必须将其放入polymer-ready事件处理程序中:

<script>
  addEventListener('polymer-ready', function() {
    console.log(document.querySelector('sample-component')
      .element.getAttribute('attributes'));
  });
</script>

<强>更新

如果要获取所有已发布属性的列表(即attributes属性中的属性加上publish: {}属性的属性),可以使用

   Object.keys(document.querySelector('sample-component').publish)

为您提供['foo1', 'foo2']