您可以为您的集合或模型提供自定义sync
函数,而不是Backbone.sync
在您获取/更新/销毁元素时调用该函数。然后,您可以定制选项以发出与您的服务器设置匹配的请求。例如,
var M = Backbone.Model.extend({
sync: function(method, model, options) {
options || (options = {});
// passing options.url will override
// the default construction of the url in Backbone.sync
switch (method) {
case "read":
options.url = "/myservice/getUser.aspx?id="+model.get("id");
break;
case "delete":
options.url = "/myservice/deleteUser.aspx?id="+model.get("id");
break;
case "update":
options.url = "/myService/setUser.aspx";
break;
}
if (options.url)
return Backbone.sync(method, model, options);
}
});
var c = new M({id: 1});
c.fetch();
c.save();
c.destroy();
还有一个模拟这些调用的小提琴http://jsfiddle.net/nikoshr/4ArmM/
如果使用 PUT 和 DELETE 作为 HTTP 动词让您感到困扰,您可以通过添加Backbone.emulateHTTP = true;
See http://jsfiddle.net/nikoshr/4ArmM/1/来强制发布一个修订版。