Есть кнопка меню («клиенты»), древовидная панель со списком клиентов (отсортировано по имени) и средство просмотра с выбранными данными клиента. Существует также действие selectionchange ..
Моя задача - при нажатии кнопки переключаться в режим просмотра клиента, выбирать и загружать данные для первого клиента при каждом нажатии кнопки. Моя проблема - хранилище не загружено, как ждать, пока ext js автоматически загрузит данные в хранилище?
код моего контроллера:
me.control({
'#nav-client': {
click: me.onNavClientClick
},
...
'clientlist': {
// load: me.selectClient,
selectionchange: me.showClient
}
});
onNavClientClick: function(view, records) {
var me = this,
content = Ext.getCmp("app-content");
content.removeAll();
content.insert(0, [{xtype: 'clientcomplex'}]);
var first = me.getClientsStore().first();
if (first) {
Ext.getCmp("clientList").getSelectionModel().select(me.getClientsListStore().getNodeById(first.get('clientId')));
}
},
...
Два основных вопроса:
это хорошее решение в моем случае? (выбрать первого клиента в древовидной панели)
var first = me.getClientsStore().first();
// i use another store to get first record because of i dont know how to get first record (on root level) in TreeStore
...
Ext.getCmp("clientList").getSelectionModel().select(me.getClientsListStore().getNodeById(first.get('clientId')));
я знаю, что этот код работает нормально в случае «load: me.selectClient» (но только один раз),
, если я помещу этот код в нажатие кнопки - я вижу ошибку
Uncaught TypeError: Cannot read property 'id' of undefined
из-за того, что me.getClientsListStore () не загружен .. так как проверить состояние загрузки этого хранилища и подождать, пока это хранилище не будет полностью загружено? ..
Спасибо!