【发布时间】:2015-11-20 15:25:28
【问题描述】:
我通过对数据数组中的项目使用 dom-repeat 来动态生成纸质复选框元素。更新数组时复选框会正确更新,但 Polymer 不会将选中的属性重置为 false。因此,如果数据发生变化,复选框会正确更新,但它们仍处于选中状态。
在我看来,dom-repeat 通过简单地更改它们的属性来重用以前创建的复选框。因此,当用户点击第一个复选框时,当 dom-repeat 重新生成纸张复选框列表时,它也会保持选中状态。
下面是产生问题的代码(我只用 Chrome 测试过)。如果单击第一个复选框,然后单击“随机项”按钮,则第一个复选框仍处于选中状态。
我该如何避免呢?我试图将选中的属性设置为 false(checked=false),但它不起作用。当然它可以通过 javascript 来完成,但我希望避免它。
谢谢
Polymer({
is: "wc-rnd-checkboxes",
properties: {
data: { type: Array, value: [1, 2, 3, 4, 5] }
},
handleRndGenerator: function() {
this.data = [];
//It simply generates an array of random length between 1 and 5.
var length = Math.floor((Math.random() * 5) + 1)
for (i=0; i < length; i++) {
var irnd = Math.floor((Math.random() * 10) + 1);
this.data.push(irnd);
}
}
});
<script src="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/polymer/polymer.html"></script>
<link rel="import" href="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/paper-button/paper-button.html" />
<link rel="import" href="https://cdn.rawgit.com/download/polymer-cdn/1.1.4/lib/paper-checkbox/paper-checkbox.html" />
<dom-module is="wc-rnd-checkboxes">
<template>
<paper-button on-click="handleRndGenerator" raised>Random Items</paper-button><br /><br />
<template is="dom-repeat" items="{{data}}">
<paper-checkbox></paper-checkbox>
<span>{{index}}</span>
<br />
</template>
</template>
</dom-module>
<h3>Polymer Dom-repeat and paper-checkbox</h3>
<p>
<b>Instructions:</b>
<ol>
<li>click on the first checkbox;</li>
<li>click on generate "Random Items";</li>
<li>Issue: Polymer does not uncheck the first checkbox</li>
</ol>
</p>
<wc-rnd-checkboxes></wc-rnd-checkboxes>
【问题讨论】:
标签: javascript checkbox polymer polymer-1.0