dgrid editor race condition
by Richard Ayotte
HTML
<script src="http://amd.egoworx.com/jsfiddle-dojo-require.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.1/dijit/themes/claro/claro.css">
<div id='grid'></div>
JavaScript
/**
* @author Richard Ayotte
*/
require([
'dgrid/editor'
, 'dgrid/Keyboard'
, 'dgrid/OnDemandGrid'
, 'dijit/form/TextBox'
, 'dojo/_base/declare'
, 'dojo/aspect'
, 'dojo/Deferred'
, 'dojo/store/Observable'
, 'dojo/store/Memory'
], function(
editor
, Keyboard
, OnDemandGrid
, TextBox
, declare
, aspect
, Deferred
, Observable
, Memory
) {
var store = new Observable(new Memory({
data:[
{"id":1,"given":"","name":""}
, {"id":2,"given":"","name":""}
, {"id":3,"given":"","name":""}
]
}));
var grid = new (declare([OnDemandGrid, Keyboard]))({
store: store
, columns: {
name: editor({
label: 'name'
, autoSave: true
, editor: TextBox
})
, given: editor({
label: 'given'
, autoSave: true
, editor: TextBox
})
}
}, 'grid');
aspect.before(grid,'removeRow',function(){
console.debug('removeRow', arguments);
});
aspect.before(grid.store,'query',function(){
console.debug('query', arguments);
});
var oldQuery = grid.store.query;
grid.store.query = function () {
var queryResults = oldQuery.apply(this, arguments);
var oldObserve = queryResults.observe;
queryResults.observe = function (callback) {
console.debug('observe called');
return oldObserve.call(this, callback, false);
};
return queryResults;
};
});