Показать сообщение отдельно
  #6 (permalink)  
Старый 02.09.2013, 21:39
Новичок на форуме
Отправить личное сообщение для sergeyv Посмотреть профиль Найти все сообщения от sergeyv
 
Регистрация: 30.08.2013
Сообщений: 8

Александр, попробовал ваше решение, даже разобрался вроде как работать должно, но вот что-то не так пошло и в консоли я упираюсь в ошибку 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: {
//                        }
//                });
//            }
        }
});


Может подскажете, что я не так понял и где путаюсь?

Заранее спасибо,
Сергей
Ответить с цитированием