我不明白你在做什么...
使用此方法而不是同步:
model.fetch();
model.save();
model.destroy();
他们会调用同步,并且他们工作得很好。
我认为没有必要覆盖原始同步,它已经足够好了。我为示例应用程序创建了一个模拟同步,它是这样工作的:
var User = Backbone.Model.extend({
notAllowedEmailHost: "gmail.com",
sync: function (method, model, options) {
if (method == "read" || method == "delete")
throw new Error("Example is not prepared for these methods.");
var email = model.get("email");
var status = 201;
if (email.indexOf(this.notAllowedEmailHost) != -1)
status = 400;
else if (method == "update")
status = 500;
options.xhr = {
status: status
};
if (status >= 400)
options.error(options.xhr);
else
options.success({
id: 1
});
}
});
上面的方法围绕你的回调创建包装函数,并且同步调用这些包装函数和结果。所以同步回调不是你通过调用获取、保存或销毁函数给出的回调......