Я объявил класс на основе dgrid/OnDemandGrid. Класс может отображать выбранную запись для редактирования с помощью dojox/form/Manager, которую я поместил в dijit/Dialog. При редактировании первой записи все работает нормально, но последующие отправки, похоже, накапливаются и повторно запускают событие отправки, хотя метод put вызывается только один раз для каждой отправки.
См. выходные данные Firebug здесь http://speedyshare.com/hQBuP/submitRecord.png (просто нажмите на название файла вверху)
Методы редактирования и отправки выглядят так, как показано ниже. Любые предложения о том, что не так с моим кодом, приветствуются.
Заранее спасибо.
editRecord: function() {
this.editMode = "edit";
var rec = this.store.get(currentRowId);
var form = registry.byId(this.editFormId);
var dialog = registry.byId(this.dialogId);
form.reset();
form.setFormValues(rec);
form.on("submit", lang.hitch(this, this.submitRecord));
var cancelButton = registry.byId(this.cancelButtonId);
dialog.show().then(function(){cancelButton.focus();});
},
submitRecord: function(event) {
// Testing counter
if(!this.counter)
this.counter = 1;
else
this.counter++;
console.log("Submit event: " + this.counter);
// Get form, dialog and retrieve record
var form = registry.byId(this.editFormId);
var dialog = registry.byId(this.dialogId);
// Check validity
if(!form.validate()) {
return false;
}
var rec = form.gatherFormValues();
// Put record in store
this.store.put(rec).then( /*..... pop up status or error toaster (code omitted)..*/ );
// Dismiss dialog
form.reset();
dialog.hide();
// Stop submit event
event.stopPropagation();
event.preventDefault();
return false;
}