从搜索项列表中创建绑定列表投影

时间:2014-09-10 17:55:38

标签: javascript windows-8 winjs

我正在尝试从搜索词集合中创建过滤列表投影。例如,如果我有一个搜索词,我可以这样做:

if (options.groupKey == "filtered") {
    this._items = Data.getItemsFromGroup(this._group);
    var query = Windows.Storage.ApplicationData.current.localSettings.values["filters"];
    this._items = this._items.createFiltered(function (item) {
        if (item.content.search(query) > -1) {
            return true
        } else {
            return false
        }
    })
}

但是,如果'过滤器'本地设置是CRLF分隔列表,如下所示:

Cisco
Microsoft
Dell

目前,搜索会将每个术语与'Cisco / nMicrosoft / nDell'进行比较,这显然不起作用。 content.search不接受数组。我应该以某种方式在createFiltered函数中执行循环吗?这似乎不符合预测的精神。普遍接受的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果在每个过滤器属性的"filters"设置中存储和对象怎么办?那会对你有用吗?

if (options.groupKey == "filtered") {
    this._items = Data.getItemsFromGroup(this._group);
    var query = Windows.Storage.ApplicationData.current.localSettings.values["filters"];
    this._items = this._items.createFiltered(function (item) {
        return Object.keys(query).indexOf(item) > -1;
    })
}

query对象如下:

{ 
    Cisco: "",
    Microsoft: "",
    Dell: ""
}

这有意义吗?

修改对代码进行了一些更改,因为我认为if (query[item])总是会返回false,因为javascript type-casting