2013-11-15 76 views
1

基本上我有一個列表,列表中的每個項目都有一個唯一的值。如果列表項被點擊,我想要添加或刪除可觀察數組中的值。所以如果這個值存在於數組中,我想刪除它,反之亦然。在observableArray Knockout JS中切換值?

陣列的結構將是簡單:

var items = ko.observableArray([ 
    "value1", 
    "value2" 
]); 

列表將具有與輸入和value1value2。如果點擊了value2的列表,我想將其從數組中移除,如果沒有,我需要push它到數組中。

所以基本上我需要切換數組中的一個項目。

這是可能的knockout.js?謝謝!

回答

1

當然。 Knockout的observableArray內置了一個indexOf方法。使用它,以及pushremove來完成你所要求的操作。像這樣的東西應該工作:

function toggle(value){ 
    if (items.indexOf(value) < 0){ 
     //it's not in the array - push it 
     items.push(value); 
    } else { 
     //it's there - remove it 
     items.remove(value); 
    } 
} 
+0

我想這點。由於某些原因,代碼會推送該值,但會立即將其刪除。這就像是如果沒有工作.... – Caleb

+0

它基本上切換值兩次...除了當我添加一個警報()它只做一次。 o我一直試圖弄清楚這一點。 – Caleb

+0

我將它綁定到「tap」功能,而不是單擊...也許這就是問題 – Caleb