您可以覆蓋集合的獲取方法
var collection = Backbone.Collection.extend({
fetch: function(options) {
if (options.data) {
options.url = '/documents/key/' + options.data.key;
delete options.data;
}
Backbone.Collection.prototype.fetch.call(this, options);
}
});
在這裏,我們只是手動設置URL每次我們做一個fetch
,並刪除該data
財產的情況下場景後面的$.ajax
將其帶上帶有問號的網址。在內部,當我們在模型上調用fetch(),save()和destroy(),以及在集合上調用fetch()和create()時,Backbone.sync()會發生什麼情況。
你可以看到源http://backbonejs.org/docs/backbone.html#section-141這裏:
if (!options.url) {
params.url = _.result(model, 'url') || urlError();
}
因此,而不是用在模型url
(這是依賴在模型上設置的集合,可以在源看到url
型號也是如此),我們明確地設置網址。
而在最後:
var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
正如你可以看到,現在$.ajax
使用options.url
代替。
感謝您的幫助。 – Erik