繁体   English   中英

PolymerJS:将项目数组传递给函数-未捕获的TypeError:将圆形结构转换为JSON

[英]PolymerJS: Pass array of items to function - Uncaught Typeerror: Converting circular structure into JSON

我有一个简单的应用程序,看起来像这样:

Polymer Todo应用程序

该应用程序具有“全部完成”按钮,该按钮应按照标签上的说明进行操作并可以正常工作。 但是,按下按钮后,我的控制台中出现以下错误消息:

未捕获的Typeerror:将圆形结构转换为JSON

未捕获的Typeerror:将圆形结构转换为JSON

这是完成所有任务的函数,如下所示:

setItemsCompleted: function(completed) {
    for (var i = 0; i < this.items.length; ++i) {
        this.set(['items', i, 'completed'], completed);
    }
}

它似乎正在接受一系列项目。 我想向其传递一系列项目,但这是我的函数,该函数由完整的“全部”按钮触发:

completeAll: function(e) {
    console.log(this.items);
    this.model.setItemsCompleted(this.items);
},

这是我的td-todos.html中完整的全部按钮的代码:

<template is="dom-if" if="{{!allCompleted}}">
    <paper-button 
        raised 
        tabindex="1" 
        class="colorful" 
        id="complete-all" 
        on-tap="completeAll">
        Complete All
    </paper-button>
</template>

我的问题是,如何传递项目数组而不是带有项目的对象?

也许它的接受函数是错误的,因为它最初接受了一个复选框触发的事件,如下所示:

toggleAllCompletedAction: function(e) {
    this.model.setItemsCompleted(e.target.checked);
},

上面的代码直接从Polymer库的TodoMVC示例中获取,并稍作修改。 因此,问题可以简化为:如何使用按钮而不是复选框?

setItemsCompleted采用Boolean作为参数。 在原始文件中,复选框的checked状态会传入。因此,根据复选框的状态,所有项都被标记为已完成或未完成。 现在,如果您想通过按钮将所有内容设置为完成,只需传入true

completeAll: function(e) {
    this.model.setItemsCompleted(true);
},

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM