3

約 1 週間前に backbonejs の作業を開始したばかりで、ビューから「変更」イベントを呼び出すと、モデルが 2 回保存されていることがわかりました。

基本的に私が持っているのは、ユーザーがセル値を更新するたびに編集できるテーブルです。サーバーにプッシュしたいのですが、そのために「変更」メソッドを定義し、セルが更新されるたびに呼び出しています。

私が直面している問題は、「変更」イベントの呼び出し時に id モデルが 2 回保存されることです。

model.save に wait:true を渡すと、change イベントが 3 回発生します

私は何か間違ったことをしていますか、それとも明らかな何かが欠けていますか? どんな助けでも大歓迎です

以下は私のコードです

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

どんな助けでも大歓迎です。

4

1 に答える 1