Я только начал работать над backbonejs около недели назад, и я обнаружил, что моя модель дважды сохраняется при прослушивании вызова «изменить» из моего представления.Магистральная модель запускает событие «change» дважды
В принципе, у меня есть таблица, которую пользователь может редактировать, когда пользователь обновляет значение ячейки, которую я хочу направить на сервер, для которого я определил метод «изменения», и я вызываю его каждый раз, когда ячейка обновляется.
Проблема, с которой я столкнулся, заключается в том, что id-модель сохраняется дважды при вызове события «change».
Если я прохожу ждать: верно для model.save, событие изменения обжигают трижды
я делаю что-то неправильно, или я что-то отсутствует obviuos? Любая помощь будет принята с благодарностью
Ниже мой код
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 вашим взглядом? Подключен ли слушатель к сетке, одновременно активируя предупреждение дважды для данного изменения? Где вы на самом деле делаете то, что задает ценности на ваших моделях? – kinakuta
Добавьте событие 'all' и' console.log' внесите некоторую информацию о том, какие события происходят, и с каким параметром. Это может помочь вам решить. – Bart