当我将值传递给聚合物元素属性时,我可以通过Polymer的数据绑定传递一个对象。但是,如果我决定离开“polymer-land”并想要将属性设置为对象,我就不能。我应该将对象传递给属性吗?
如果答案是“否,你应该使用方法” 然后一个后续问题是,“我可以在没有进入Polymer框架的情况下调用元素的方法吗?”例如,如果我有一个Polymer元素:
<hello></hello>
我希望访问一个名为“world”的方法。在Polymer中,它将是:
this.$.hello.world();
是否可以在不使用Polymer元素定义的情况下调用此方法?
答案 0 :(得分:8)
正如您所指出的,在Polymer内部,可以使用数据绑定将对象绑定到已发布的属性:
<polymer-element name="other-el">
<template>
<hello-world persons="{{persons}}"></hello-world>
</template>
<script>
Polymer('other-el', {
created: function() {
this.persons = [{'name': 'Eric'}, {'name': 'Bob'}];
}
});
</script>
</polymer-element>
从Polymer外部,Polymer元素还支持属性的序列化数组/对象property type is hinted:
<hello-world persons="[{'name': 'Eric'}, {'name': 'Bob'}]"></hello-world>
因为.persons
是元素的属性,所以你也可以在JS中设置它:
document.querySelector('hello-world').persons = [{'name': 'Eric'}, {'name': 'Bob'}];
答案 1 :(得分:1)
所以回答我自己的问题。
我认为属性不应该传递给对象。如果需要将对象传递给元素,请使用元素方法。
要调用方法,可以使用简单的元素选择和方法调用。
document.querySelector('hello').world();
我以为我曾经尝试过这个并没有用。
-Jay