有没有办法获取聚合物组件中定义的所有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
答案 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']
。