我正在使用Polymer Web Components。
每当我使用this.$
时,我都会收到一个未定义的错误。我还尝试了this.shadowRoot
并声明它为空。
例如:
在<polymer-element>
内:
<script>
Polymer({
cardClick: function(event, detail, sender) {
this.$.ordertemplatediv.style.display = 'none';
// the above line gives the following error:
// "Uncaught TypeError: Cannot read property 'style' of undefined"
this.shadowRoot.querySelector('#ordertemplatediv').style.display = 'none';
// the above line gives the following error:
// "Uncaught TypeError: Cannot read property 'style' of null"
}
});
</script>
在另一个文件中的另一个<polymer-element>
内:(为清晰起见,省略了结束标记)
<template>
<div id="ordertemplatediv">
<template repeat="{{item in items}}">
<!-- some irrelevant elements -->
这两个文件&#39;根元素是<polymer-element>
。
我尝试在这个项目的不同情况下多次使用this.$
,但它从未奏效。有什么想法吗?
任何帮助都将不胜感激。
编辑1 - 上下文
这就是我真正想要做的事情:
我有3 <polymer-elements>
我们会致电<list-1>
,<l-card>
和<list-2>
。
<list-1>
看起来像这样:(为清晰起见,省略了结束标记)
<polymer-element name="list-1">
<template>
<template repeat="{{post in posts}}">
<l-card>
<l-card>
包含上面的<script>
。
<list-2>
包含上面的<template>
。
点击(或点按)<list-2>
中的<l-card>
时,我希望<list-2>
刷新(重新加载数据)。
答案 0 :(得分:1)
如果您要将Polymer()
调用与其注册的<polymer-element>
分开,则需要传递元素的名称:
Polymer('your-element', {
...
});
否则,您需要将<template>
放在<polymer-element>
内,以便无名注册有效。