Одним из вариантов является переопределить URL или UrlRoot свойство каждой коллекции или модели тип, который вы хотите «заново установить» как:
Article = Backbone.Model.extend({
url: function() {
return "http://myapiserver.com/articles/" + this.id;
// Or slightly better, use some global for the base url and build from that
}
});
Если у вас есть много моделей и коллекционеров по типам, и вы хотите, чтобы все их URL-адреса были повторно основаны, вам может быть лучше обслуживаться путем переопределения Backbone.sync (который вызывается всеми операциями модели и коллекции CRUD), чтобы переопределить URL-адрес, прежде чем он будет перенаправлен в $. Ajax(). Вы можете сделать что-то вроде этого:
// We'll call the "standard" Backbone.sync to do the real work, so grab a
// reference to it.
var oldSync = Backbone.sync;
Backbone.sync = function(method, model, options) {
var url = _.isFunction(model.url) ? model.url() : model.url;
if (url) { // If no url, don't override, let Backbone.sync do its normal fail
options = options || {};
options.url = "http://myapiserver.com" + url;
}
// Let normal Backbone.sync do its thing
return oldSync.call(this, method, model, options);
}
Я не проверял, что точный код, но я думаю, что это (или что-то близко) должны работать.