Backbone JS保存功能

时间:2014-07-15 16:00:53

标签: javascript ruby-on-rails json backbone.js

我已经为我的项目写了一个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对象返回,我只是知道如何访问它在骨干方面。

2 个答案:

答案 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()函数后如何从服务器获得响应的几种方法。 例如:

您需要指定errorsuccess回调:

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);
}