首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主干Model.save返回未定义的jqxhr而不是jqxhr。

主干Model.save返回未定义的jqxhr而不是jqxhr。
EN

Stack Overflow用户
提问于 2014-09-02 08:14:27
回答 1查看 714关注 0票数 2

编辑1:这个问题不再有效。有关更多信息,请查看本问题末尾的编辑#2。

主干文档表示,如果验证成功,Backbone.Model.save函数将返回一个jqXHR对象,否则它将返回false。因此,如果未定义验证方法,则model.save方法应该返回一个jqXHR,但实际上它返回“未定义”。model.fetch工作正常,并返回一个jqXHR对象。

jqXHR对象对于与其他被分离的对象进行链接非常有用。我正在对多个模型调用一个保存,并希望在所有保存方法完成后更新UI。我想做这样的事

代码语言:javascript
复制
$.when(promise1,promise2,.....)
.done().then(function(){
   /* some callback code here */
})

这是医生们说的

保存model.save(属性、选项) 通过将模型委托给Backbone.sync,将模型保存到数据库(或替代持久层)。如果验证成功,否则返回jqXHR。

这是我的密码

代码语言:javascript
复制
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));

控制台输出为

代码语言:javascript
复制
undefined
a jqXHR object

这不是记录jqXHR对象,而是将“未定义”记录到控制台。有人能帮我吗?

编辑2:我忘记提到在代码中重写Backbone.sync方法,而在重写的方法中没有返回任何内容。由于model.save将委托给Backbone.sync (或它自己的自定义同步方法),所以保存方法返回“未定义”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 09:13:13

我忘了在代码中重写Backbone.sync方法,而在重写的方法中,我没有返回任何内容。由于model.save委托给Backbone.sync,所以保存方法返回“未定义”。我修改了代码以返回jqXHR对象。现在一切都很好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25618781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档