Polymer 1.0 dom-repeat失败“Uncaught TypeError:无法读取属性'extends'of undefined”

时间:2015-10-20 20:16:16

标签: html firebase polymer firebase-polymer

我有一个简单的dom模块,里面有一个dom-repeat模板:

etc/hosts

我在这里使用它:

<dom-module id="bookmark-extends">
<style>(...)</style>
<template>
        <template is="dom-repeat" items="[[extends]]" as="extend">
                <a href="[[extend.url]]">
                <paper-button>[[extend.__firebaseKey__]]</paper-button>
                </a>
        </template>
</template>
</dom-module>
<script>
Polymer({
is: 'bookmark-extends',
properties: {
    extends: {
        type: Array,
        notify: true,
        value: function(){ return []; }
    }
}
});
</script>

我收到了这个错误:

未捕获的TypeError:无法读取未定义的属性“extends”

请帮帮我,我不知道该怎么办 因为在我的第二个代码中,几乎相同的过程正在运行......

编辑:

现在我不使用额外的模块,不再使用“extend”这个词......

<dom-module id="bookmark-cards">
<style>(...)</style>
<template>
    <firebase-collection
        location="*******"
        data="{{bookmarks}}"></firebase-collection>
    <template is="dom-repeat" items="[[bookmarks]]" as="bookmark">
        (...)
            <div hidden="[[!bookmark.extendable]]" class="card-actions">
                <bookmark-extends extends="[[bookmark.extends]]">
                </bookmark-extends>
            </div>     
            <div hidden="[[!bookmark.searchable]]" class="card-actions">
                <input-search-on-site id="input" website-name="[[bookmark.__firebaseKey__]]" website-search-url="[[bookmark.searchUrl]]">
                </input-search-on-site>
            </div>          
        </paper-card>
    </template>
 </template>
</dom-module>
<script>Polymer({
is: 'bookmark-cards'
});</script>

新错误是:“[dom-repeat :: dom-repeat]:项目的预期数组,找到对象” 如果我试试这个:

            <div hidden="[[!bookmark.expandable]" class="card-actions">
                <template is="dom-repeat" items="[[bookmark.links]]" as="link">
                    <a href="{{link.url}}"><paper-button>{{link.__firebaseKey__}}</paper-button></a>
                </template>
            </div> 

同样的错误来了。

1 个答案:

答案 0 :(得分:0)

一些事情。根据Polymer建议,将您的脚本元素移动到dom-module标记内。

https://www.polymer-project.org/1.0/docs/devguide/properties.html

其次,不要使用&#34;延伸&#34;作为实例变量/属性名称。 Extends是一个Polymer关键字,用于扩展现有的HTML元素。

https://www.polymer-project.org/1.0/docs/devguide/registering-elements.html

此Plunker显示了主要更改:http://plnkr.co/edit/BKzrfC

<dom-module id="bookmark-extends">
<template>
        <template is="dom-repeat" items="[[extnds]]" as="extend">
                <div>extend</div>
        </template>
</template>
<script>
Polymer({
is: 'bookmark-extends',
properties: {
    extnds: {
        type: Array,
        notify: true,
        value: function(){ return ['one', 'two']; }
    }
}
});
</script>
</dom-module>