问题是将observableArray中的选定列表项推送到其他observableArray?提供小提琴

时间:2014-08-30 06:58:34

标签: jquery knockout.js

好吧,我试图在点击Add to List按钮时推送特定可观察数组的列表项,但只有在选中任何一个单选按钮时,我才需要显示类似的警报。

这是我的FIDDLE

我建立了与我正在寻找的近乎匹配的小提琴。希望它能帮助你找到我正在寻找的东西。

截至目前,当我们点击按钮时,它根本不添加甚至我检查或不知道最新情况但最终它进入点击功能。

到目前为止,我遇到了困难:

如果是复选框,它非常直接在数组中知道哪个listitem带复选框,但在单选按钮中我的可观察数组将被填充DYNAMICALLY我无法找到带收音机的excat list项目按钮已选中。

我在if

中遇到foreach条件
if(service.check()) // this one fails me 
        {
          self.addedList.push(service);
            count++;
        }

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?

查看小提琴here

我更改了以下内容

       if(service.Check) // this one fails me 
        {
          self.addedList.push(service);
            count++;
        }

答案 1 :(得分:1)

广播输入checked绑定的工作方式略有不同,请参阅documentation

  

对于单选按钮,当且仅当参数值等于单选按钮节点的value属性或checkedValue参数指定的值时,KO才会设置要检查的元素。

因此,您不能在样本中使用true / false,因为您实际上有3个值。以下是更改标记的方法:

<input type="radio" name="select" data-bind="checked: $parent.checkedCode, value: Code" />   

在您的视图模型中:

self.checkedCode = ko.observable();
self.addToList = function () {
    var count =0;
    ko.utils.arrayForEach(self.PhoneList(),function(service){
        if(service.Code() == self.checkedCode())
        {
            self.addedList.push(service);
            count++;
        }

    }); 
    if(count == 0) {alert("Check something to Add");}        
};

见工作demo。如果你想使用布尔单选按钮(当只有2个可能的值时),我建议你看看Ryan Niemeyer使用checkedRadioToBool自定义绑定这个很棒的jsfiddle