Я использую Ext.selection.CheckboxModel
в Ext.grid.Panel
и проверял некоторые элементы после привязки данных и рендеринга компонента. Ниже приведена часть компонента, которая работает без ошибок, но неправильно:
listeners: {
afterRender: function (thisObj, eOpts) {
var window = Ext.ComponentQuery.query('#' + 'requestOperator_kbkAccess-window')[0];
if (window) {
var row = window.accessGrid.getSelectionModel().getSelection()[0],
ppp = row.get('Ppp'),
codes = ppp.map(a => a.Code);
Ext.defer(function () {
var selections = [];
codes.forEach(function (item, index) {
let i = thisObj.getStore().find('Code', item);
if (i !== -1) {
selections.push(store.getAt(i))
}
});
console.log(thisObj.getStore().data);
thisObj.getSelectionModel().select(selections);
}, 100);
}
}
}
Этот код получает строку кодов, таких как 022,077,009
, от родительского компонента и пытается установить как проверенные эти коды в Ext.selection.CheckboxModel
. Неправильная работа этого кода заключается в том, что строка let i = thisObj.getStore().find('Code', item);
возвращает -1, а при отладке количество элементов в thisObj.getStore().data
равно 0. Но в консоли я вижу, что console.log(thisObj.getStore().data);
возвращает ожидаемый результат: На viewready
результат тот же.
Я новичок в ext Js и не понимаю, что я делаю неправильно в этой простой функциональности? Пожалуйста помоги. Спасибо.