使子组件在Polymer 1.0.0中调用其父API

时间:2015-06-01 21:49:39

标签: javascript polymer

我有两个使用Polymer 1.0.0定义的Web组件,我的问题是访问父公共API



<dom-module id="x-gallery">
  <template is="dom-repeat" items="{{photos}}">
    <x-photo photo="{{item}}"></x-photo>
  </template>
</dom-module>

<script>
  Polymer({
    is: 'x-gallery',

    ...

    getAll: function() {
      return this.photos;
    }
  });
</script>

<dom-module id="x-photo">
  <template>
    <img src="{{photo.src}}">
  </template>
</dom-module>

<script>
  Polymer({
    is: 'x-photo',
    properties: {
      photo: Object
    },

    ready: function() {
      // HERE ---
      // How could I access the x-gallery.getAll public method?
      // ...
    }
  });
</script>
&#13;
&#13;
&#13;

正如您所看到的,我想知道您如何轻松地从孩子那里访问getAll公共方法?

我已经看到一些文档涉及基于事件的解决方案(听儿童事件),但这并不符合我的需要。除非你告诉我唯一的解决方案..

有什么想法吗?

2 个答案:

答案 0 :(得分:11)

ready: function() {
    this.domHost.getAll()
}

来自文档: http://polymer.github.io/polymer/

“domHost”是

  

“包含此元素的本地dom元素”

通过这种方式,您可以访问“父”及其功能。 在我看来,这不是Polymer框架中的正确方法。

我在我的项目中使用它只是为了为父级定义回调函数。

(抱歉我的英语不好)

答案 1 :(得分:0)

确认..我使用了两种方法 - 1.父显式设置子属性指向父级,以及2. domHost。内置时,domHost更容易,更好。 在方法1中,您必须在设置属性之前确保子项已准备就绪。