1

モデルのコレクションをフィルタリングしようとしていますが、フィルターのみがコレクションではなくオブジェクトを返すようです。私が読んだことから、_() でフィルター関数をラップすると、フィルターに組み込まれている underscore.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 
4

1 に答える 1

1

clientsコレクションを次のようにインスタンス化したとします。

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
}));
于 2013-05-31T19:29:58.947 に答える