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

Knockout: Dynamically creating observables based on an array of unknown length

本文关键字:动态 数组 创建 对象 观察 于未知 未知 Knockout      更新时间:2023-09-26

情况如下:

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

当页面加载时,应该加载这个列表,并且应该为每个项目生成一个复选框(带标签)。没问题。这样的列表项看起来像这样:

<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
}

你不需要迭代每个属性来使其可观察,更好的方法是使用knockout.mapping.js插件。所以代码会像这样:-

self.itemList = ko.mapping.fromJS(list); //list that will come from server(ajax request)

然后使用checked binding来跟踪选中的复选框。

<<p> 小提琴演示/strong>