Javascript 在ObservalArray淘汰JS中切换值?
基本上我有一个列表,列表中的每个项目都有一个唯一的值。如果单击列表项,我希望从可观察数组中添加或删除该值。因此,如果该值存在于数组中,我想删除它,反之亦然 阵列的结构将很简单:Javascript 在ObservalArray淘汰JS中切换值?,javascript,arrays,knockout.js,observable,Javascript,Arrays,Knockout.js,Observable,基本上我有一个列表,列表中的每个项目都有一个唯一的值。如果单击列表项,我希望从可观察数组中添加或删除该值。因此,如果该值存在于数组中,我想删除它,反之亦然 阵列的结构将很简单: var items = ko.observableArray([ "value1", "value2" ]); 该列表将包含带有value1和value2的输入。如果单击了带有value2的列表,我想将其从数组中删除,如果没有,我需要将其推送到数组中 所以基本上我需要切换数组中的一个项 使用knocko
var items = ko.observableArray([
"value1",
"value2"
]);
该列表将包含带有value1
和value2
的输入。如果单击了带有value2
的列表,我想将其从数组中删除,如果没有,我需要将其推送到数组中
所以基本上我需要切换数组中的一个项
使用knockout.js是否可以这样做?谢谢 当然。Knockout的observableArray内置了一个indexOf
方法。使用它,连同推
和删除
一起执行您的请求。像这样的方法应该会奏效:
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);
}
}
功能切换(值){
if(项目索引OF(值)<0){
//它不在数组中-推它
项目。推送(价值);
}否则{
//就在那里-把它拿走
项目。删除(值);
}
}
我之前试过这个。出于某种原因,代码会推送该值,但会立即将其删除。就像if-else不起作用一样…它基本上会切换两次值。。。除了添加alert()时,它只执行一次。o、 o我已经尝试解决这个问题有一段时间了。我将它绑定到一个tap
函数,而不是click…可能这就是问题所在。还有别的问题。不过,上述方法是可行的