Po wywołaniu polecenia "pobierz" w module Backbone.Collection wywoływana jest funkcja Backbone.sync, która domyślnie prosi kolekcję o użycie adresu URL.
Więc jeśli serwer odpowiada:
/models/batch/?ids=1,2,3,4
Można zrobić coś takiego:
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;
}
});
i używać go tak:
var coll = new MyCollection({}, {ids: [1, 2, 3, 4]});
Trzeba zdać identyfikatory w parametrze options, ponieważ funkcja konstruktora Backbone.Collection ustawia modele przekazane wcześniej w pierwszym parametrze wywołuje funkcję "initialize".
Teoretycznie powinno to zadziałać (czytaj: zupełnie nieuczciwie).
Dziękuję bardzo, dam ci szansę – Joe