Cuando llamas a 'buscar' en una Backbone.Collection, a su vez llama a Backbone.sync, que por defecto solo le pide a la colección que use la url.
Así que si su servidor responde a:
/models/batch/?ids=1,2,3,4
Se podría hacer algo como:
var MyCollection = Backbone.Collection.extend({
model: Model,
url: '/models',
initialize: function(models, options) {
ids = options.ids || [];
if (ids.length > 0) {
this.fetchByIds(ids);
}
},
fetchByIds: function(ids) {
// Save a reference to the existing url
var baseUrl = this.url;
// Assign our batch url to the 'url' property and call the server
this.url += '/?ids=' + ids.join(',');
this.fetch();
// Restore the 'url' property
this.url = baseUrl;
}
});
y usarlo de esta manera:
var coll = new MyCollection({}, {ids: [1, 2, 3, 4]});
que tendría que pasar los ids en el parámetro de opciones, porque la función del constructor Backbone.Collection establece los modelos pasados en el primer parámetro antes llama a la función 'inicializar'.
En teoría, esto debería funcionar (léase: completamente sin probar).
Muchas gracias, lo intentaré – Joe