2013-11-15 4 views
1

В основном у меня есть список, и каждый элемент в списке имеет уникальное значение. Если элемент списка нажат, я хочу, чтобы значение добавлялось или удалялось из наблюдаемого массива. Поэтому, если это значение существует в массиве, я хочу удалить его и наоборот.Переключить значения в наблюдаемый Array Knockout JS?

Структура массива будет просто:

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

Список будет иметь входы с value1 и value2. Если щелкнуть список с value2, я хочу удалить его из массива, а если это не так, мне нужно указать push в массив.

Так что в основном мне нужно переключать элемент в массиве.

Возможно ли это с нокаутом.js? Благодаря!

ответ

1

Несомненно. Наблюдаемый массив нокаута имеет метод indexOf, встроенный в него. Используйте его вместе с push и remove, чтобы делать то, что вы просите. Что-то вроде этого должно работать:

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

Я пробовал это раньше. По какой-то причине код выталкивает значение, но сразу же удаляет его. Это похоже на то, что else не работает. – Caleb

+0

Он переключает значение дважды в основном ... За исключением случаев, когда я добавляю alert(), он делает это только один раз. o.O Я пытался понять это на некоторое время. – Caleb

+0

Я связываю это с функцией 'tap', а не кликом ... возможно, это проблема – Caleb

Смежные вопросы