KnockoutJS复选框,根据选中的项目构建字符串

时间:2014-02-26 05:56:51

标签: knockout.js

我正在制作一个基本上有一组聚类的复选框列表。结构如下所示

群集1:

  1. Cluster1 Subitem 1 [x]
  2. Cluster1子项2 [x]
  3. Cluster1子项3 [x]
  4. 群集2:

    1. Cluster2 Subitem 1 [x]
    2. Cluster2 subitem 2 [x]
    3. Cluster2子项3 [x]
    4. 第3组:

      1. Cluster3 Subitem 1 [x]
      2. Cluster3子项2 [x]
      3. Cluster3子项3 [x]
      4. 我想构建查询,相同群集中的选定项目将通过OR加入,来自不同群集的选定项目将通过AND加入..

        e.g。 (Cluster1 Subitem 1 OR cluster1 subitem 2)AND(Cluster2 Subitem 3)AND(Cluster3 Subitem 1 OR cluster3 subitem 3)

        在上面的示例中,所选项目是cluster1中的子项目1和2,集群2中的子项目3以及cluster3中的子项目1和3 ...

        我已经设法用这个小提琴中的硬编码值来实现它:http://jsfiddle.net/rahulrulez/8YfmW/3/

        代码段 -

                switch (parent.Id()) {
                case "IsIssue":
                    if (self.IsIssue.indexOf(item.Value()) == -1 && item.isChecked(false)) self.IsIssue.push(item.Value());
                    else self.IsIssue.remove(item.Value());
                    break;
                case "Owner":
        
                    if (self.Owner.indexOf(item.Value()) == -1 && item.isChecked(false)) self.Owner.push(item.Value());
                    else self.Owner.remove(item.Value());
                    break;
                case "Project":
                    if (self.Project.indexOf(item.Value()) == -1 && item.isChecked(false)) self.Project.push(item.Value());
                    else self.Project.remove(item.Value());
                    break;
            }
        

        如果我们不确定数字,如果我们从服务器获取群集作为响应,是否有任何方法可以优化它?

        提前致谢, 拉胡

1 个答案:

答案 0 :(得分:1)

你可以在isChecked observable上绑定你的复选框:

<input type="checkbox" data-bind="attr : { value : Name}, checked: isChecked">

然后在您的计算中创建您的查询,这是一个小提琴示例:http://jsfiddle.net/RapTorS/PRV42/