Динамическая загрузка содержимого (панелей) в окне просмотра Ext Js

Ну, в основном, я смотрю на эту проблему, у меня есть много компонентов с динамическими вещами, которые написаны на стороне сервера с помощью PHP.

В зависимости от пользователя мои компоненты будут меняться в зависимости от роли пользователя.

Поэтому мне нужно знать любые способы / примеры / информацию о том, как это сделать.

1 - Я использовал функцию загрузки EXTJS, но в ней четко сказано, что я не буду загружать скрипт только в виде обычного текста.

2- Я использовал eval (), но меня немного пугает этот подход, как в этом примере компонент макета ящика (статический)

var contentPanel = new Ext.Panel({
                frame: true,
                style: {marginTop: '10px'},
                height: 315,
                border: true,
                bodyBorder: false,
                layout: 'fit',
                id: 'contentPanel'
            });


            var mainPanel = new Ext.Panel({
                title: 'Panel Principal',
                id: 'mainPanel',
                border: true,
                frame: true,
                width: '50%',
                style: {margin: '50px auto 0 auto'},
                height: 400,
                renderTo: Ext.getBody(),
                items: [
                        {
                            html: '<a href="#" onClick="requestContent(\'panel1\');">Panel 1</a>'
                        },
                        {
                            html: '<a href="#" onClick="requestContent(\'panel2\');">Panel 2</a>'
                        },
                        contentPanel

                ]
            })

и обновляю содержимое макета с помощью файлов js, записанных на сервере

function receiveContent(options, success, response)
        {



            var respuesta = response.responseText;

            //console.log(respuesta);

            eval(respuesta);

            //console.log(options.url);

            url = options.url;

            url = url.substring(0,(url.search(/(\.)/)));

            var contenedor = Ext.getCmp('contentPanel');

            contenedor.removeAll();

            var contenido = Ext.getCmp(url);

            contenedor.add(contenido);
            contenedor.doLayout();
        }

        function requestContent(panel)
        {
            //panel es el nombre del archivo que quiero
            Ext.Ajax.request({
                url: panel+'.js',
                callback: receiveContent
            });
        }

любого другого способ сделать это, чего я НЕ хочу делать, так это создавать миллион различных компонентов и загружать их ВСЕ при входе в систему, как многие люди, кажется, говорят

5
задан GumaTerror 15 September 2010 в 16:38
поделиться