子Web组件的调用方法

时间:2015-07-13 15:33:01

标签: polymer web-component

我真的很难弄清楚如何调用嵌套的Polymer Web组件的函数。

这是标记:

preg_match_all('/(\$[0-9A-Fa-f]{2}(?:,\$[0-9A-Fa-f]{2})+)/', $input, $m);
print_r($m[1]);

<rise-playlist> <rise-playlist-item duration="5"> <rise-distribution distribution='[{"id":"VGZUDDWYAZHY"}]'></rise-distribution> </rise-playlist-item> </rise-playlist> 组件有一个rise-distribution函数,我想从canPlay内部调用。

rise-playlist dom-module的定义如下:

rise-playlist

我可以像这样成功访问<dom-module id="rise-playlist"> <template> <content id="items" select="rise-playlist-item"></content> </template> </dom-module> 元素:

rise-distribution

但是,当我尝试拨打var distribution = Polymer.dom(this.$.items[0]).querySelector("rise-distribution"); 时,它表示distribution.canPlay()不是函数。

我已经定义distribution.canPlay dom-module这样:

rise-playlist-item

不确定我是否需要<dom-module id="rise-playlist-item"> <content id="dist" select="rise-distribution"></content> </dom-module> 标记,但不起作用。

有什么想法吗?

THX。

1 个答案:

答案 0 :(得分:1)

我知道已经有一段时间,但我确信这个问题仍然会发生,因为它被观看了很多次。

您的组件定义可能存在问题。让我解释。 这是将子组件放入DOM中的方式:

<your-child-component></your-child-component>

而且这应该是你的组件的定义:

Polymer({

  is: 'your-child-component',

  apiMethod: function() {
  //some stuff
  }
});

如果您错误地或由于复制粘贴错误导致错误输入了is: 'your-child-component'部分,那么它将不会反映<your-child-component>您将会因为您的问题而感到困惑:

this.$$('your-child-component').apiMethod();

会告诉你没有你愿意打电话的方法。

正确识别并从DOM <your-child-component>中选择聚合物,但如果您有不同的is属性(例如is: your_child_component>),则不会将其API附加到您选择的dom元素。

我希望如果有人遇到这个问题会有所帮助。