骨干使集合搜索不区分大小写

时间:2014-12-19 16:41:49

标签: javascript backbone.js backbone-collections

我正在搜索这样的骨干系列,

search: function( filterValue ) {

    var filterThroughValue = function(data) {

        return _.some(_.values(data.toJSON()), function(value) {
            if(value != undefined) {
                value = (!isNaN(value) ? value.toString() : value);

                return value.indexOf(filterValue) >= 0;
            }
        });
    };

    return App.Collections.filterCollection = this.filter(filterThroughValue);
}

搜索参数来自文本输入,我想要返回结果,或者字母大小写是否可能?我可以将params和搜索到的内容改为小写吗?

1 个答案:

答案 0 :(得分:0)

将您正在测试的值和搜索字词转换为小写字母:

// At the start of `search`
filterValue = filterValue.toLowerCase();

// In your `some` predicate:
return value.toLowerCase().indexOf(filterValue) >= 0;

顺便说一句,在Model类中实现大多数逻辑会更清晰:

MyModel = Backbone.Model.extend({

  matches: function(term) {
    var lowerCaseTerm = term.toLowerCase();
    return this.values().some(function(value) {
      if(!value) return false;
      return value.toString().toLowerCase().indexOf(lowerCaseTerm) >= 0;
    })
  }
})

MyCollection = Backbone.Collection.extend({

  search: function(term) {
    return this.filter(function(model) {
      return model.matches(term) 
    })
  }
})