以下是这种情况:
我有一个动态填充的项目列表。该列表中的项目数是未知的,可以从零到数百个项目不等。
加载页面时,应加载此列表,对于每个项目,应生成一个复选框(带标签)。没问题。这样的列表项将如下所示:
<div class="checkbox">
<label>
<input type="checkbox" />
Item 1
</label>
</div>
这是棘手的部分:
对于这些项目中的每一项,都应创建ko.observable()
,以便我可以跟踪复选框的checked
绑定。
一个理想的情况是这样的(我知道这不会起作用,只是为了说明我的目标):
for (var i = 0; i < list.length; i++) {
var listItem$ = ko.observable(); // $ = i
}
所以稍后,我可以按照以下方式做点什么:
if (listItem4()) {
//listItem is checked (=true), do some actions
}
我希望这是有道理的。
答案 0 :(得分:0)
您不需要迭代每个属性以使其可观察,更好的方法是使用knockout.mapping.js插件。 所以代码就像: -
self.itemList = ko.mapping.fromJS(list); //list that will come from server(ajax request)
然后只需使用选中的绑定来跟踪选中的复选框。