Backbone模型两次触发“更改”事件

时间:2013-06-14 16:51:15

标签: javascript backbone.js backgrid

我刚开始在一周前开始研究backbonejs,我发现我的模型在听取调用时被保存了两次"更改"从我的观点来看。

基本上我拥有的是一个用户可以编辑的表,只要用户更新单元格值我想将其推送到服务器,我已经定义了一个"更改"方法,我每次更新单元格时都会调用它。

我面临的问题是,在调用"更改"事件。

如果我通过wait:true为model.save,则更改事件被触发三次

上午我做错了什么,或者我错过了什么东西?任何帮助将不胜感激

以下是我的代码

var Territory = Backbone.Model.extend({
   initialize: function () {
        Backbone.Model.prototype.initialize.apply(this, arguments);
        this.on("change", function (model, options) {
            if (options && options.save === false) return;
            model.save();
        });
    }
});

var Territories = Backbone.Collection.extend({
    model: Territory,
    url: "js/bookings.json"
});
var territories = new Territories();

var columns = [{
    name: "bookingId",
    label: "ID",
    editable: false,
    cell: Backgrid.IntegerCell.extend({
        orderSeparator: ''
    })
}, {
    name: "bookingTime",
    label: "Time",
    cell: "string"
}, {
    name: "bookingUser",
    label: "Name",
    cell: "string"
}, {
    name: "reserveDate",
    label: "Date",
    cell: "string"
}, {
    name: "bookingEmail",
    label: "Email",
    cell: "string"
}];

var grid = new Backgrid.Grid({
    columns: columns,
    collection: territories

});

grid.listenTo(territories, "change", function () {
    alert(territories.pluck('bookingId'))
});

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

我很不好,这2个事件是从客户端发出的一个用于保存数据的事件,另一个是在保存数据后来自服务器的响应。