don*_*pep 5 web-component polymer
我真的很难弄清楚如何调用嵌套的Polymer Web组件的函数.
这是标记:
<rise-playlist>
<rise-playlist-item duration="5">
<rise-distribution distribution='[{"id":"VGZUDDWYAZHY"}]'></rise-distribution>
</rise-playlist-item>
</rise-playlist>
Run Code Online (Sandbox Code Playgroud)
该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>
Run Code Online (Sandbox Code Playgroud)
我可以成功访问这样的rise-distribution元素:
var distribution = Polymer.dom(this.$.items[0]).querySelector("rise-distribution");
Run Code Online (Sandbox Code Playgroud)
但是,当我试着打电话时distribution.canPlay(),它说这distribution.canPlay不是一个功能.
我已经定义了dom-module的rise-playlist-item是这样的:
<dom-module id="rise-playlist-item">
<content id="dist" select="rise-distribution"></content>
</dom-module>
Run Code Online (Sandbox Code Playgroud)
不确定我是否需要那个<content>标签,虽然它们都不起作用.
有任何想法吗?
谢谢.
我知道已经有一段时间了,但我确信这个问题仍然会发生,因为它被查看了很多次。
可能是你的组件定义有问题。让我解释。这是将子组件放入 DOM 中的方式:
<your-child-component></your-child-component>
Run Code Online (Sandbox Code Playgroud)
这应该是你的组件的定义:
Polymer({
is: 'your-child-component',
apiMethod: function() {
//some stuff
}
});
Run Code Online (Sandbox Code Playgroud)
如果您错误地或由于复制粘贴错误而输错了该is: 'your-child-component'部分,因此它不会反映<your-child-component>您会感到困惑,因为您:
this.$$('your-child-component').apiMethod();
Run Code Online (Sandbox Code Playgroud)
会告诉你没有你愿意调用的方法。
Polymer 从 DOM 中正确识别和选择<your-child-component>,但如果您有不同的is属性(例如is: your_child_component>),它不会将其 API 附加到您选择的 dom 元素。
如果有人遇到这个问题,我希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
2301 次 |
| 最近记录: |