Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干模型火灾“;更改“;事件两次_Javascript_Backbone.js_Backgrid - Fatal编程技术网

Javascript 主干模型火灾“;更改“;事件两次

Javascript 主干模型火灾“;更改“;事件两次,javascript,backbone.js,backgrid,Javascript,Backbone.js,Backgrid,大约一周前,我才开始使用backbonejs,我发现在我的视图中调用“更改”事件时,我的模型被保存了两次 基本上,我拥有的是一个用户可以编辑的表,每当用户更新单元格值时,我都要将其推送到服务器,为此我定义了一个“更改”方法,每次更新单元格时我都会调用它 我面临的问题是,在调用“更改”事件时,id模型被保存了两次 如果我通过model.save的wait:true,则会触发三次更改事件 我是做错了什么,还是遗漏了什么?任何帮助都将不胜感激 下面是我的代码 var Territory = Backb

大约一周前,我才开始使用backbonejs,我发现在我的视图中调用“更改”事件时,我的模型被保存了两次

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

我面临的问题是,在调用“更改”事件时,id模型被保存了两次

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

我是做错了什么,还是遗漏了什么?任何帮助都将不胜感激

下面是我的代码

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'))
});

任何帮助都将不胜感激。

我的错,这两个事件是客户端为保存数据而触发的,另一个是服务器在保存数据后做出的响应。

此处显示的内容不足以识别代码触发两次更改的位置。Backgrid是你的观点吗?连接到网格的侦听器是否也会为给定的更改触发两次警报?您在哪里实际执行设置模型值的操作?添加一个
all
事件和
console。记录一些有关确切发生的事件以及参数的信息。这可能会帮助你解决问题。这实际上很有用!我也有同样的问题。是的,来自服务器的响应将ID添加到模型中,从而触发更改事件。