循环复选框并获取数据

时间:2013-04-03 09:46:53

标签: jquery knockout.js

这是我之前的问题here

的延续

您可以看到页面加载时它将显示2个选定项目,即列表中的两个和三个。现在,当我检查选项Test1时,它没有被添加到列表中。简而言之,它不会在列表中添加新选择的项目。我已完成以下操作以循环选定的项目

viewModel.selectedItems = ko.computed(function() {
debugger;
    return ko.utils.arrayMap(viewModel.checkDuplicate(), function(id) {
        return ko.utils.arrayFirst(viewModel.dataOne(), function(item) {
            return item.name1 == id; 
        }); 
    });
});   

我已经摆弄了小提琴here,所以很容易理解。暂时忘记更新按钮。当我选择一些复选框时,它应该只显示在更新按钮下面的列表中选择的那些复选框。请帮忙。

1 个答案:

答案 0 :(得分:1)

  

现在当我检查选项Test1时,它没有被添加到列表中。简而言之,它没有在列表中添加新选择的项目......

我创建了一个小提琴,其中列表根据复选框的选中/取消选中更新。检查一下

Working Fiddle

视图模型

function VM() {
    var self = this;   

    self.Checkboxes = ko.observableArray([
        new Checkbox("one", 1, "Test1"),
        new Checkbox("two", 2, "Test2", true),
        new Checkbox("three", 3, "Test3", true)
    ]);

    self.SelectedItems = ko.computed(function(){
        var boxes = [];
        ko.utils.arrayForEach(self.Checkboxes(), function(box){
            if(box.IsSelected()){
              boxes.push(box);
            }
        });
        return boxes;
    });
}

让我知道它是否有帮助!

<强>更新

Working fiddle