2014-08-30 35 views
0

好吧,我試圖按下Add to List按鈕點擊一個特定的可觀察陣列的列表項,但只有當單選按鈕的任何人被檢查,否則我只需要顯示一個警報檢查類似的東西。問題將observableArray中的選定listitem推送到其他observableArray?小提供

這裏是我的FIDDLE

我建的撥弄近匹配到我所期待的。希望它能讓你正確地標記我正在尋找的東西。

截至目前在當前的小提琴當我們點擊按鈕,它根本沒有添加甚至我檢查或不知道最新發生的事情,但最終它進入點擊功能。

好東西我一直堅持努力迄今:

在複選框的情況下,它非常直截了當與複選框被選中,但在單選按鈕列表項一個數組中知道我觀察到的陣列將被填充DYNAMICALLY我無法找到與單選按鈕檢查excat列表項目。

我被困在if條件foreach

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

任何建議表示讚賞。

+0

檢查您是否在瀏覽器控制檯中收到錯誤。 – 2014-08-30 09:18:22

回答

1

無線電輸入checked結合的作用有點不同,請參閱documentation

單選按鈕,KO將設置元件能夠當且僅檢查如果參數值等於單選按鈕節點的值屬性或由checkedValue參數指定的值。

所以你不能在你的示例中使用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看到這個不錯的jsfiddle,用checkedRadioToBool自定義綁定。

+0

作品令人敬畏的兄弟。但是如何獲得$ parent.checkedCode ==代碼?你能澄清伴侶嗎? – 2014-08-30 11:05:29

+0

由於我們在綁定中指定了'checked:$ parent。checkedCode,value:Code',這個可觀察值將保持當前選擇的無線電輸入值(ko設置無線電輸入值到相應的碼)。 – 2014-08-30 11:08:12

+0

哦,好吧,這是有道理的。再次感謝你 。好吧,只是好奇,有什麼辦法可以限制一些東西,如一次添加不能再次添加? – 2014-08-30 11:41:32

1

這是你想要的嗎?

看小提琴here

我已經改變了以下幾行

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

Ilya Luzyanin解決方案符合我的要求。 ty你的時間兄弟 – 2014-08-30 11:51:49

+1

沒問題。很高興知道你的問題解決了。 – 2014-08-30 17:38:21