Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js中的筛选模型(非集合)_Javascript_Jquery_Backbone.js - Fatal编程技术网

Javascript Backbone.js中的筛选模型(非集合)

Javascript Backbone.js中的筛选模型(非集合),javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我想知道是否可以像如何过滤集合那样过滤模型 我正在做一个体育网站的搜索功能,我想能够过滤的类型,即足球,网球,篮球,游泳,体育等搜索结果 这是我的代码(请检查filterSearch()方法): JSON: 对于这种情况,您使用模型而不是主干集合是否有特定的原因?您可以轻松获得单个搜索结果的模型: var searchResult = Backbone.Model.extend({}); 和一个集合来表示搜索 var Search = Backbone.Collection.extend({

我想知道是否可以像如何过滤集合那样过滤模型

我正在做一个体育网站的搜索功能,我想能够过滤的类型,即足球,网球,篮球,游泳,体育等搜索结果

这是我的代码(请检查
filterSearch()
方法):

JSON:


对于这种情况,您使用模型而不是主干集合是否有特定的原因?您可以轻松获得单个搜索结果的模型:

var searchResult = Backbone.Model.extend({});
和一个集合来表示搜索

var Search = Backbone.Collection.extend({
    model : searchResult,
    urlRoot: '/search',

    filterSearch: function(type) {
       return this.where({'type' : type});
    },
    parse: function(response) {
        return response.search;
    }

});
否则,只需搜索模型中提供的数组:


能否提供一个JSON示例,说明搜索api的结果是什么样的?您要过滤的内容还不清楚。@ne8il,谢谢您的回复。由于我所在地的数据保护法,我无法显示我使用的json。但我已经包括了一个类似的和更简单的版本,我已经做了,上面…JSON看起来更像一个集合而不是一个模型。你为什么不使用一个集合,用
parse
方法来打开JSON的
search
部分呢?同意。除非此响应中包含的不仅仅是搜索,否则这应该是一个集合。如果问题是如何将其放入集合中,只需重写集合上的parse,将搜索数组设置为集合数据。@kinakuta,是的,响应中不仅仅有搜索,但我只对搜索感兴趣。另外,我没有构建主干代码,它已经存在了,在期限紧迫的情况下进行重构会太多,等等……谢谢你。使用模型而不是集合的原因是因为我没有从一开始就编写代码,而且由于时间紧迫等原因,重构太多了。。。我会试试你的解决方案,希望它会好起来。
var searchResult = Backbone.Model.extend({});
var Search = Backbone.Collection.extend({
    model : searchResult,
    urlRoot: '/search',

    filterSearch: function(type) {
       return this.where({'type' : type});
    },
    parse: function(response) {
        return response.search;
    }

});
filterSearch: function(type) {
    return _.where(this.get('search'), {'type' : type});
}