使用backboneJS集合以任何顺序搜索单词

时间:2014-03-11 09:14:00

标签: javascript jquery arrays backbone.js backbone-collections

我有代码从文本框中搜索输入的单词,获取输入的单词,在集合中搜索并在HTML页面中显示结果。

因为我可以使用LIKE完全按原样搜索单词。

(即)

search: function(type,letters){
    var pattern = new RegExp(letters,"gi");
    return _(this.filter(function(data) {
        return pattern.test(data.get(type));
    }));
}

如果模型有,

  1. 你好医生
  2. 嗨先生
  3. Hello World
  4. 欢迎程序员
  5. 用户输入“Hello”,它显示我

    你好医生 你好世界

    即使用户错误地排列了单词,我也需要显示结果

    即如果用户输入“World Hello”

    没有显示任何结果。但是,我想向用户展示

    Hello World

    在Web SQL中解决了相同的场景。
    Ref here

    我想在backboneJS集合中实现这一点。 你能帮我吗?

1 个答案:

答案 0 :(得分:1)

您可以在空格上分割文本,然后迭代过滤模型并将其缩小为所需的选择。例如:

var C = Backbone.Collection.extend({
    search: function(type, letters) {
        var words = letters.split(/\s+/), //array of words
            models = _.clone(this.models); //copy of the models

        //for each word, check if it is found in the given attribute
        _.each(words, function(word) {
            var pattern = new RegExp(word, "i");
            models = _.filter(models, function(model) {
                return pattern.test(model.get(type));
            });
        });

        return models;
    }
});

演示http://jsfiddle.net/ha8RM/1/