我已经为我的项目写了一个rails后端,当你保存或创建一个新记录时,状态200和保存的帖子的json表示。
当我在bacbone中执行以下操作时:
modelObject = new App.Models.Post();
modelObject.set({title: 'asdasdas', content: 'asdadasdasdasdasd'});
if (modelObject.isValid()){
modelObject.save().then( ... )
}
如何获取返回的post对象? (假设帖子成功)。
在轨道方面,当我执行@post.save
时,我也在创建操作中成功保存时渲染json: @post, status: 200
,因此有一个json对象返回,我只是知道如何访问它在骨干方面。
答案 0 :(得分:0)
modelObject.save()调用将返回一个promise对象。你应该将.done()调用链接到该函数并将其传递给函数,如下所示:
modelObject.save().done(function(e) {
// handle your response here
});
您也可以使用.fail()函数以相同的方式处理故障。把它们连在一起就像这样:
modelObject.save().done(function(e) {
// handle your response here
}).fail(function(e) {
// handle failure here
});
这是编写相同代码的另一种方法:
var promise = modelObject.save();
promise.done(function(e) {
// handle your response here
});
promise.fail(function(e) {
// handle failure here
});
还有一个.always()可以链接到始终被称为:
var promise = modelObject.save();
promise.done(function(e) {
// handle your response here
});
promise.fail(function(e) {
// handle failure here
});
promise.always(function(e) {
// always call this on success or failure
});
答案 1 :(得分:0)
backbone docs描述了在调用save()
函数后如何从服务器获得响应的几种方法。
例如:
您需要指定error
和success
回调:
var model = new App.Models.Post();
model.set({title: 'some title', content: 'some content'});
var options = {
success: function(model, response){
console.log('success handler');
model.set({id: response.id});
},
error: function(model, xhr){
console.log('error handler');
}
};
指定wait
选项以在设置模型属性之前等待来自服务器的响应:
options.wait = true;
需要使用指定选项调用save
函数:
if (model.isValid()) {
model.save({}, options);
}