Knockout:基于未知长度的数组动态创建可观察对象
Knockout: Dynamically creating observables based on an array of unknown length
情况如下:
我有一个项目列表,它将被动态填充。该列表中的项目数量是未知的,可能从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>相关文章:
- 带有多个答案选项的Javascript动态数组窗口
- 在jquery中声明基于动态变量的动态数组
- 给出动态数组时出现 jsTree 错误
- 如何将元素添加到动态数组并排除现有元素
- Javascript关联动态数组
- 计算类元素的未知/动态数组长度
- AngularStrap Select和ng选项don'使用动态数组不能很好地工作
- 如何在Javascript中创建动态数组
- JavaScript 动态数组与对象和数组
- jQuery中的动态数组名称
- 如何映射输入字段的动态数组
- 在动态 JavaScript 对象(键/值对)中创建动态数组
- 如何将一个数组数据添加到多个动态数组中
- 构建菜单或组合框,数据存储在“动态”数组中
- 创建简单的动态数组
- AngularJS重复动态数组值
- 引导预类型不适用于从 php 页面检索的动态数组
- 基于用户在UI中输入的数字创建动态数组(绑定到网格)
- JavaScript-动态数组和循环
- 将ng单击绑定到动态数组上的ng重复