using contains而不是stringStartsWith knockout js

时间:2013-07-09 20:39:46

标签: asp.net-mvc-4 knockout.js

我对我的模型有所了解:

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,所以我得到的结果是我的searchterm包含在字符串中的任何地方而不是刚开始。

我认为这必须是一个非常常见的请求,但找不到任何明显的东西。

有什么建议吗?

1 个答案:

答案 0 :(得分:14)

您只需使用string.indexOf method检查“字符串包含”:

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);