Backbonejs - 保存后避免解析

时间:2013-08-27 04:42:32

标签: backbone.js

Backbone documentation说,

  只要服务器返回模型的数据,就会调用

parse   获取并保存。该函数传递给原始响应对象,并且   应该返回要在模型上设置的属性hash。

但是我为我的模型定制了解析函数。我只想在我获取数据时才执行它,而不是在我保存数据的时候。

有办法吗?我可以在解析函数中检查我的响应。但是有没有内置的选项呢?

2 个答案:

答案 0 :(得分:7)

这是关于保存模型的主干source file

var model = this;
var success = options.success;
options.success = function(resp) {
    model.attributes = attributes;
    var serverAttrs = model.parse(resp, options);
    if (options.wait) serverAttrs = _.extend(attrs || {}, serverAttrs);
    if (_.isObject(serverAttrs) && !model.set(serverAttrs, options)) {
        return false;
    }
    if (success) success(model, resp, options);
    model.trigger('sync', model, resp, options);
};

您可以在save上传递自定义选项,例如:model.save(null, { saved: true }),然后在自定义parse中传递:

parse: function(response, options) {
    if ( options.saved ) return this.attributes;
    // do what you're already doing
}

我根本没有对此进行测试,但它至少应该让你开始。

答案 1 :(得分:4)

只需将解析:false传递给save方法作为选项。

m = new MyModel()
s.save(null, {parse: false})