0

Backbone.Paginator clientPager を使用しています。

現在、サーバーから取得したモデルを this.origModels 内にコピーします。そして、this.models を切り捨てられたページ分割されたバージョンに変更します。

collection.toJSON を実行すると、切り捨てられたバージョンのみが取得されます。origModelsのtoJSONを取得したいのですが?バックボーンコードの内部を調べてみました。しかし、成功できませんでした。

Backbone.js から

toJSON: function(options) {
  return this.map(function(model){ return model.toJSON(options); });
}

var methods = ['forEach', 'each', 'map', 'collect', 'reduce', 'foldl',
  'inject', 'reduceRight', 'foldr', 'find', 'detect', 'filter', 'select',
  'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',
  'max', 'min', 'toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',
  'tail', 'drop', 'last', 'without', 'indexOf', 'shuffle', 'lastIndexOf',
  'isEmpty', 'chain'];

// Mix in each Underscore method as a proxy to `Collection#models`.
_.each(methods, function(method) { 
  Collection.prototype[method] = function() { 
    var args = slice.call(arguments);
    args.unshift(this.models);
    return _[method].apply(_, args);
  };
});

私は次のことを試みましたが、うまくいきませんでした:(

var args = [].slice.call(function(model) { return model.toJSON(); }); 
args.unshift(this.origModels);
var jsonmodels = _['map'].apply(_, args);
4

1 に答える 1

0

次のコードを使用してこれを修正しました。

var jsonmodels = _.map(this.collection.origModels, function(model){ return model.toJSON(); });
于 2013-10-17T03:20:18.317 に答える