【问题标题】:additional function of ko.observablearray like removeall, indexOf comes as not supportedko.observablearray 的附加功能,如 removeall,indexOf 不支持
【发布时间】:2013-07-01 04:43:28
【问题描述】:

我有两个 ko.observablearray。 我用从服务器获得的一些值填充的数组之一:

`self.AllItems = ko.observableArray([]);

function (data) {
   for (var index = 0; index < data.length; index++) {
   self.AllItems.push(data[index]);
   }
 };

第二个数组,其中包含我从模型的特定属性中获得的数据。

self.SelectedItems = ko.observableArray(modelData.Modalities);

这很好用。

现在我基本上想从“allitems”中删除“selecteditems”。

我试过了

self.AllItems.removeAll(self.SelectedItems());

那没用。 然后我在尝试indexOf 时遇到异常,表示该对象不支持此操作。我彻底糊涂了。请告诉我哪里出错了。

【问题讨论】:

    标签: knockout.js ko.observablearray


    【解决方案1】:

    我发了fiddle,说明你的逻辑不错。

    var all =ko.observableArray([]);
    
    for(var index = 0; index < 10; index++) {
        all.push({'name':('item'+index)});
    }
    
    var itemsToRemove = ko.observableArray([])
    itemsToRemove.push(all()[2]);
    itemsToRemove.push(all()[5]);
    
    all.removeAll(itemsToRemove());
    
    console.log(JSON.stringify(all()));
    // results : [{"name":"item0"},{"name":"item1"},{"name":"item3"},{"name":"item4"},{"name":"item6"},{"name":"item7"},{"name":"item8"},{"name":"item9"}] 
    

    您能检查一下 modelData.Modalities 中的内容吗?

    【讨论】:

    • 问题似乎出在其他地方。我的 AllItems 列表包含我可以看到的值,因为我已将其绑定到 ui 控件,显示长度为零。我无法访问其中的任何元素。
    • 您确定不应该使用 modelData.Modalities() 而不是 modelData.Modalities 吗?
    • 是的,效果很好。我还验证了 selectedItems 数组的内容。
    • 所以你需要解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 2011-02-20
    • 1970-01-01
    • 2011-12-09
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多