Ext JS 4.2 componentLayoutCounter
Я добавляю несколько сеток (cellplugin в каждой сетке) на панели вкладок и отображаю их. однако, когда я нажимаю на ячейку для редактирования, она не отображает текстовую область.
Я также настроил редактор как текстовую область.
Я попытался отладить плагин и нашел проблему (Editing.js) в коде ниже -
startEdit: function(record, columnHeader) {
var me = this,
context,
layoutView = me.grid.lockable ? me.grid : me.view;
// The view must have had a layout to show the editor correctly,
// defer until that time.
// In case a grid's startup code invokes editing immediately.
if (!layoutView.componentLayoutCounter) {
layoutView.on({
boxready: Ext.Function.bind(me.startEdit, me, [record, columnHeader]),
single: true
});
return false;
....
....
}
Проблема заключается в том, что componentLayoutCounter имеет значение 0 из-за этого, если блок выполняется и возвращается false, что останавливает редактирование.
Мой вопрос, как мы можем гарантировать, что значение componentLayoutCounter всегда устанавливается правильно?
1 ответ
Это год спустя, но если кто-нибудь исправит ошибку, вот решение в переопределении. Он проверяет, инициализирован ли макет, а также componentLayoutCounter:
Ext.override(Ext.grid.plugin.Editing, {
startEdit: function(record, columnHeader) {
var me = this,
context,
layoutView = me.grid.lockable ? me.grid : me.view;
//BUGFIX: added check to make sure componentLayout is not initialized before denying edit.
if (!layoutView.componentLayoutCounter && !layoutView.componentLayout.initialized) {
layoutView.on({
boxready: Ext.Function.bind(me.startEdit, me, [record, columnHeader]),
single: true
});
console.log(layoutView.componentLayoutCounter,'componentLayoutCounter not set, so not starting edit',me.view,me,me.view.componentLayout);
return false;
}
// If grid collapsed, or view not truly visible, don't even calculate a context - we cannot edit
if (me.grid.collapsed || !me.grid.view.isVisible(true)) {
//console.log('either the grid is collapsed ',me.grid.collapsed,' or not visible ',me.grid.view.isVisible);
return false;
}
context = me.getEditingContext(record, columnHeader);
//console.log('trying to find context',context,' from ',record,columnHeader);
if (context == null) {
return false;
}
if (!me.preventBeforeCheck) {
if (me.beforeEdit(context) === false || me.fireEvent('beforeedit', me, context) === false || context.cancel) {
return false;
}
}
return context;
}
});