Александр, попробовал ваше решение, даже разобрался вроде как работать должно, но вот что-то не так пошло и в консоли я упираюсь в ошибку JS - Uncaught TypeError: Cannot call method 'hide' of undefined
При помощи console.log() вывел formContainer и вижу тут странный id: "contentPanel-1015". По вашему совету, добавил все формы в один контейнер и скрыл их. Может косяк какой-то из-за того, что я в качестве контейнера использую Panel?
Ext.define('CM.view.ContentPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.contentPanel',
itemId: 'content',
requires: [
'CM.view.user.List',
'CM.view.partner.List'
],
title: '',
layout: 'fit',
initComponent: function() {
var me = this;
Ext.applyIf(me, {
items: [
{
xtype: 'partnerlist',
hidden: true,
itemId: 'partners'
},
{
xtype: 'userlist',
hidden: true,
itemId: 'users'
}
]
});
me.callParent(arguments);
}
});
и мой контроллер выглядит вот так:
Ext.define('CM.controller.Navigation', {
extend: 'Ext.app.Controller',
itemId: 'navigation',
init: function() {
this.listen({
component: {
appnavigation: {
itemclick: this.onNavigationItemClick
}
}
});
},
onNavigationItemClick: function(treeview, record) {
var formContainer = Ext.ComponentQuery.query('[itemId="content"]')[0];
// скрываем все формы
console.log(formContainer);
Ext.Array.each(formContainer.items, function(formItem) {
formItem.hide();
});
// находим нужную форму
var activeForm = Ext.ComponentQuery.query('[itemId="' + record.get('id') + '"]')[0];
// показываем эту форму
activeForm.show();
// загружаем в активную форму данные (например, с сервера)
// if (activeForm.is('grid')) {
// activeForm.getStore().load({
// params: {
// }
// });
// }
}
});
Может подскажете, что я не так понял и где путаюсь?
Заранее спасибо,
Сергей