backbone.js - Backbonejs - 保存后避免解析

标签 backbone.js

Backbone documentation说,

parse is called whenever a model's data is returned by the server, in fetch, and save. The function is passed the raw response object, and should return the attributes hash to be set on the model.

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

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

最佳答案

这是来自主干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, { saving: true }),然后在您的自定义parse:

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

我根本没有测试过这个,但它至少应该让你开始。

关于backbone.js - Backbonejs - 保存后避免解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18457090/

相关文章:

javascript - Backbone.js:仅渲染集合中的最后一个模型,显示模型总数

firefox - 带有凭据的跨域请求在 Firefox 中不起作用

javascript - 如何从外部文件访问模型 View 内的变量

javascript - 将带有参数的方法绑定(bind)到主干模型更改事件

javascript - 如何在 Backbone.js 中设置单个属性(验证)

javascript - 保存模型时更新主干 View

javascript - Backbone.js 和 Handlebars.js 创建相对 URL

javascript - JavaScript 是否有 Money 类?

javascript - 主干获取集合生命周期,从响应中设置属性

使用 Backbone.js 发布到 Yii PHP 框架