如何仅将更改的表单属性序列化为JSON

时间:2014-03-05 10:09:48

标签: javascript jquery backbone.js

我目前正在客户端Web应用程序中使用Backbone。 当我渲染视图时,我使用模板将模型的值放入视图中。 目前,当我单击“保存”按钮时,我使用名为jsonify(https://github.com/kushalpandya/JSONify)的插件将整个表单内容序列化为JSON。 (也许你也可以用serializeArray()做这个,但这不是问题)

现在我意识到,当用户同时编辑数据时,我可能会遇到覆盖数据的问题。 因此,我想只在实际发生变化的情况下才将数据发送到服务器。 我发现model.save(data, {patch: true});

可以实现这一点

但我仍然需要找出哪些表单元素已更改。 我发现了一些使用事件或序列化之前/之后执行此操作的方法,但我想要的是组合序列化和获取更改属性的方法。

是否有任何插件允许我仅序列化我的表单中已更改的属性并忽略那些没有更改的属性? (我发现的序列化插件直到现在只序列化整个表单。)

如果没有,跟踪表单中哪些元素发生变化的最简单方法是什么。我怎样才能仅序列化这些属性?

1 个答案:

答案 0 :(得分:0)

您可以使用以下事件跟踪表单中的更改:

var MyView ...
    events: {
        'change input': 'inputChanged'
    },

    inputChanged: function(event) {
        this.data || (this.data = {});
        this.data[event.currentTarget.id] = event.currentTarget.value;
    }
    ...