我真的很难弄清楚如何调用嵌套的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。
答案 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元素。
我希望如果有人遇到这个问题会有所帮助。