聚合物自动节点查找不起作用

时间:2014-10-29 17:17:39

标签: javascript html polymer shadow-dom

我正在使用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>刷新(重新加载数据)。

1 个答案:

答案 0 :(得分:1)

如果您要将Polymer()调用与其注册的<polymer-element>分开,则需要传递元素的名称:

Polymer('your-element', {
   ...
}); 

否则,您需要将<template>放在<polymer-element>内,以便无名注册有效。