2015-11-03 62 views
1

我有一个简单的应用程序看起来像这样:PolymerJS:通过项目的阵列功能 - 遗漏的类型错误:转换圆形结构成JSON

Polymer Todo App

的应用程序有一个完成所有按钮这应该做标签说它应该和它的工作。但之后,我按下按钮,我在我的控制台中看到以下错误消息:

Uncaught Typeerror: Converting circular structure into JSON

Uncaught Typeerror: Converting circular structure into 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); 
}, 

上面的代码取直出聚合物图书馆TodoMVC例子并稍加修改。所以问题可以简化为,我该如何使用按钮而不是复选框?

回答

1

setItemsCompletedBoolean作为参数。在原始状态下,复选框的状态为checked。因此,根据复选框的状态,所有项目都被标记为已完成或未完成。现在,如果你想设置所有的按钮完成,只需通过true

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