属性应该传递对象吗?

Jay*_*yoo 3 polymer

当我将值传递给聚合物元素属性时,我可以通过Polymer的数据绑定传递一个对象.但是,如果我决定离开"polymer-land"并想要将属性设置为对象,我就不能.我应该将对象传递给属性吗?

如果答案是"不,你应该使用方法",那么后续问题就是"我可以在不在Polymer框架中调用元素的方法吗?" 例如,如果我有一个Polymer元素:

<hello></hello>
Run Code Online (Sandbox Code Playgroud)

我想访问一个名为"world"的方法.在Polymer中,它将是:

this.$.hello.world();
Run Code Online (Sandbox Code Playgroud)

是否可以在不使用Polymer元素定义的情况下调用此方法?

ebi*_*del 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>
Run Code Online (Sandbox Code Playgroud)

从聚合物外面

从Polymer外部,如果提示属性类型,Polymer元素还支持属性的序列化数组/对象:

<hello-world persons="[{'name': 'Eric'}, {'name': 'Bob'}]"></hello-world>
Run Code Online (Sandbox Code Playgroud)

因为.persons是元素的属性,你也可以在JS中设置它:

document.querySelector('hello-world').persons = [{'name': 'Eric'}, {'name': 'Bob'}];
Run Code Online (Sandbox Code Playgroud)