2

编辑 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 方法返回“未定义”。

4

1 回答 1

4

我忘了提到我在我的代码中重写了 Backbone.sync 方法,而在我重写的方法中我没有返回任何东西。由于 model.save 委托给 Backbone.sync,save 方法返回“未定义”。我更正了我的代码以返回 jqXHR 对象。现在一切都运行良好。

于 2014-09-08T09:13:13.473 回答