过滤Backbone Collection而不删除模型

时间:2013-05-23 01:42:41

标签: jquery backbone.js marionette

我正在使用Backbone应用程序来显示从Soundcloud中提取的歌曲。 我有搜索栏作为歌曲集的过滤器。

结果是歌曲列表

var matched = results.filter(function(model) { 
    return model.attributes.title.toLowerCase().indexOf(val.toLowerCase()) > -1
});
results.reset(matched);

这很好用,我输入时歌曲就会消失。 但是我试图找到一种方法,一旦他们再次遇到搜索字符串,就将它们添加回集合中。

此时,当我回到一个空的搜索字符串时,唯一显示的是搜索到达的结果。

==================编辑==================

这就是我最终做的事情

    $("#query").on('focus', function(){

    var history = results.clone();

    $(this).on('keyup', function(){
        var val = $(this).val();
        var matched = history.filter(function(model) { 
            return model.get('title').toLowerCase().indexOf(val.toLowerCase()) > -1
        });
        results.reset(matched)

    });

1 个答案:

答案 0 :(得分:0)

不是过滤results而是将过滤器的结果放在另一个数组中('匹配')。

保留原始收藏内容(模型)的副本。

视图应仅呈现匹配的模型元素。或者,此逻辑可以完全在视图级别发生,因为不涉及实际的模型逻辑。