主干电网:如何避免双换事件



我有一个backbone/backgrid可编辑网格,每次我编辑一个单元格时,"change"事件被触发两次,我最终发出两个单独的PUT请求。

我知道这会发生,因为当我在单元格中编辑它时,"change"事件会触发一次,另一次当数据从服务器返回时;并且可以通过将{wait: true}传递给save方法来避免这种行为,但我不知道我需要在哪里重载它。

我的模型声明是这样的:
var Redirects = Backbone.Model.extend({
    urlRoot: '/global/redirects',
    initialize: function () {
        Backbone.Model.prototype.initialize.apply(this, arguments);
        this.on("change", function (model, options) {
            if (options && options.save === false) return;
            model.save({
                error: alertMe
            });
        });
        this.on('fetch request', function (e) {
            loadingOn(e);
        });
        this.on('sync error', function (e) {
            loadingOff(e);
        });
        this.on('error', function(e, resp){
            alertMe(e, resp);
        });
    }
});

当模型从服务器同步时,无论wait选项如何,您都不应该收到第二次更改事件。

你的save调用的问题是你没有指定attributes哈希,即第一个参数。如果您没有任何属性要修改,考虑到您正在触发保存更改事件,可能就是这种情况,那么您将需要以下内容:

    this.on("change", function (model, options) {
        if (options && options.save === false) return;
        model.save(null, {error: alertMe});
    });

实际情况是,您将error设置为模型的一个属性,这触发了change事件。

相关内容

  • 没有找到相关文章

最新更新