Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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_Backbone.js_Filter_Underscore.js - Fatal编程技术网

Javascript Backbone.js过滤器集合返回一个对象,而不是集合

Javascript Backbone.js过滤器集合返回一个对象,而不是集合,javascript,backbone.js,filter,underscore.js,Javascript,Backbone.js,Filter,Underscore.js,我试图过滤模型集合,但过滤器似乎只返回一个对象,而不是一个集合。从我所读到的内容来看,将filter函数包装在uz()中将强制它使用下划线.js内置过滤器,并返回相同的类型。但这似乎不起作用。代码在下面,有什么想法吗 var clients = this.get('clients') if (clients instanceof Backbone.Collection) { console.log('clients is a collection'); }

我试图过滤模型集合,但过滤器似乎只返回一个对象,而不是一个集合。从我所读到的内容来看,将filter函数包装在uz()中将强制它使用下划线.js内置过滤器,并返回相同的类型。但这似乎不起作用。代码在下面,有什么想法吗

    var clients = this.get('clients')

    if (clients instanceof Backbone.Collection) {
      console.log('clients is a collection');
    } else if (_.isObject(clients)) {
      console.log('clients is an object');
    } else if (_.isArray(clients)) {
      console.log('clients is an array');
    } else {
      console.log('clients is not known');
    }

    clients = _(clients.filter(function (client) {
      return client.get('case_studies').length;
    }));

    if (clients instanceof Backbone.Collection) {
      console.log('clients is a collection');
    } else if (_.isObject(clients)) {
      console.log('clients is an object');
    } else if (_.isArray(clients)) {
      console.log('clients is an array');
    } else {
      console.log('clients is not known');
    }
这是我的输出:

    clients is a collection
    clients is an object 

假设您像这样实例化了
客户机
集合:

var Client = Backbone.Model.extend({});
var Clients = Backbone.Collection.extend({
  model: Client
});
var clients = new Clients();
那么你需要做的就是:

clients = new Clients(clients.filter(function (client) {
  return client.get('case_studies').length
}));

假设您像这样实例化了
客户机
集合:

var Client = Backbone.Model.extend({});
var Clients = Backbone.Collection.extend({
  model: Client
});
var clients = new Clients();
那么你需要做的就是:

clients = new Clients(clients.filter(function (client) {
  return client.get('case_studies').length
}));

完美地工作,只是在结尾缺少一个括号。完美地工作,只是在结尾缺少一个括号。