【发布时间】:2015-10-01 15:33:48
【问题描述】:
我想为动态生成的复选框分配唯一的增量值,从 0 开始并以 1 递增(即,复选框值应为 0、1、2、3 等)。我有以下代码 sn-p 这是大图的抽象:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title></title>
<script src="knockout-3.3.0.js"></script>
</head>
<body>
<table>
<tbody data-bind="foreach:arr">
<tr>
<td><input type="checkbox" data-bind="checked : $root.ch, attr : {value : $root.ci}"></td>
</tr>
</tbody>
</table>
<button data-bind="click:add">Click</button>
<button data-bind="click:func">Checked</button>
<script type="text/javascript">
var viewModel = {
ci : ko.observable("0"),
ch : ko.observableArray([]) ,
arr : ko.observableArray([]),
add : function(){
alert(viewModel.ci());
viewModel.arr.push("something");
var temp = Number(viewModel.ci());
temp++;
viewModel.ci(ko.toJSON(temp));
},
func : function(){
for(var i = 0; i < viewModel.ch().length; i++)
{
alert(viewModel.ch()[i]);
}
}
};
ko.applyBindings(viewModel);
</script>
</body>
</html>
最初,用户界面将包含一个“单击”按钮和一个“已选中”按钮。一旦用户单击“单击”,就会生成一个新的复选框,并根据上述逻辑为其分配值。当用户点击'Checked'时,所有复选框的值都会被一一提醒。现在,这里有一个问题:单击选中时,它会很好地显示所选复选框的值,但是当您从浏览器中的复选框上选择“检查元素”时,所有复选框都会获得相同的值,该值等于创建的复选框。如何解决此问题,使复选框具有增量值?
【问题讨论】:
-
你为什么要跳过箍将
ci存储为字符串? -
为什么要使用
ko.toJSON将简单的数字转换为字符串?
标签: javascript html checkbox knockout.js