【问题标题】:Toggle values in observableArray Knockout JS?在 observableArray Knockout JS 中切换值?
【发布时间】:2013-11-29 07:06:59
【问题描述】:

基本上我有一个列表,列表中的每个项目都有一个唯一的值。如果单击列表项,我希望从可观察数组中添加或删除该值。因此,如果该值存在于数组中,我想删除它,反之亦然。

数组的结构很简单:

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

该列表将包含value1value2 的输入。如果点击了value2的列表,我想把它从数组中删除,如果没有,我需要push它到数组中。

所以基本上我需要切换数组中的一个项目。

knockout.js 可以做到这一点吗?谢谢!

【问题讨论】:

    标签: javascript arrays knockout.js observable


    【解决方案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);
        }
    }
    

    【讨论】:

    • 我之前试过这个。出于某种原因,代码会推送该值,但之后会立即将其删除。这就像 if else 不起作用....
    • 它基本上会切换两次值......除非我添加了一个 alert() 它只做一次。 o.O 我一直在尝试解决这个问题。
    • 我将其绑定到tap 函数,而不是单击...也许这就是问题所在
    • 可能。 Something else 是错误的。不过,上述方法是可行的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2012-03-19
    • 1970-01-01
    • 2012-07-09
    • 2013-01-27
    • 1970-01-01
    • 2014-07-10
    相关资源
    最近更新 更多