9

我的模型上有以下内容:

self.filteredItems = ko.computed(function () {
            var filter = this.filter().toLowerCase();

            if (!filter) {
                return this.sites();
            } else {
                return ko.utils.arrayFilter(this.sites(), function (item) {
                    return ko.utils.stringStartsWith(item.Name().toLowerCase(), filter);
                });
            }

        }, self);

我用它在我的页面上进行搜索,而不是 stringStartsWith 我想要某种 .contains ,所以我得到的结果是我的搜索词包含在字符串中的任何位置,而不是仅仅在开头。

我想这一定是一个很常见的要求,但找不到任何明显的东西。

有什么建议吗?

4

1 回答 1

15

您可以简单地使用该string.indexOf方法来检查“字符串包含”:

self.filteredItems = ko.computed(function () {
    var filter = this.filter().toLowerCase();

    if (!filter) {
        return this.sites();
    } else {
        return ko.utils.arrayFilter(this.sites(), function (item) {
            return item.Name().toLowerCase().indexOf(filter) !== -1;
        });
    }

}, self);
于 2013-07-09T20:42:32.030 回答