编辑 1:这个问题不再有效。有关更多信息,请查看此问题末尾的 EDIT #2。
骨干文档说,如果验证成功,Backbone.Model.save 函数返回一个 jqXHR 对象,否则返回 false。因此,如果未定义验证方法,则 model.save 方法应返回 jqXHR 但实际上返回“未定义”。model.fetch 工作正常并返回一个 jqXHR 对象。
jqXHR 对象对于与其他延迟对象链接很有用。我正在调用多个模型的保存,并希望在所有保存方法完成后更新 UI。我想做类似的事情
$.when(promise1,promise2,.....)
.done().then(function(){
/* some callback code here */
})
这是文档所说的
save model.save([attributes], [options])
通过委托给 Backbone.sync 将模型保存到数据库(或替代持久层)。如果验证成功则返回 jqXHR,否则返回 false。
这是我的代码
var x = new Backbone.Model();
x.url = "/a/valid/url";
var y = x.save({key1: "value1"});
var z = x.fetch();
console.log(typeof(y));
console.log(typeof(z));
控制台输出是
undefined
a jqXHR object
这不是记录 jqXHR 对象,而是将“未定义”记录到控制台。有人可以帮我弄这个吗?
编辑 2:我忘了提到我在我的代码中重写了 Backbone.sync 方法,而在我重写的方法中我没有返回任何东西。由于 model.save 委托给 Backbone.sync(或它自己的自定义同步方法),因此 save 方法返回“未定义”。