Javascript 淘汰:基于未知长度的数组动态创建可观察对象

Javascript 淘汰:基于未知长度的数组动态创建可观察对象,javascript,knockout.js,Javascript,Knockout.js,情况如下: 我有一个项目列表,将动态填充。该列表中的项目数未知,可能从零到数百个项目不等 加载页面时,应加载此列表,并为每个项目生成一个复选框(带标签)。没问题。这样的列表项如下所示: <div class="checkbox"> <label> <input type="checkbox" /> Item 1 </label> </div> 因此,稍后,我将能够沿着以下路线做一些事情:

情况如下:

我有一个项目列表,将动态填充。该列表中的项目数未知,可能从零到数百个项目不等

加载页面时,应加载此列表,并为每个项目生成一个复选框(带标签)。没问题。这样的列表项如下所示:

<div class="checkbox">
    <label>
        <input type="checkbox" />
        Item 1
    </label>
</div>
因此,稍后,我将能够沿着以下路线做一些事情:

if (listItem4()) {
    //listItem is checked (=true), do some actions
}

我希望这有点道理。

您不需要迭代每个属性以使其可见,更好的方法是使用knockout.mapping.js pluggin。 因此,代码如下所示:-

self.itemList = ko.mapping.fromJS(list); //list that will come from server(ajax request)
然后只需使用选中绑定来跟踪选中的复选框


我认为您需要选中,因为这就足以创建带有复选框的列表,所以不需要为这些复选框创建可观察对象。对吧?这取决于你如何获得数据。您可能也对。数据的加载方式可能如下:
$.getJSON(URL,self.listItems).done(函数(){…}),因此列表中将填充项目的名称。我本来不想在项目中添加更多的.js文件,但这似乎是不可避免的。谢谢你!有没有一种方法可以在没有括号的情况下显示?是否可以用stringyes替换“[]”(如果未选择任何字符串),您可以在所选阵列上使用foreach。看到这把小提琴了吗
self.itemList = ko.mapping.fromJS(list); //list that will come from server(ajax request)