Ну, в основном, я смотрю на эту проблему, у меня есть много компонентов с динамическими вещами, которые написаны на стороне сервера с помощью 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
});
}
любого другого способ сделать это, чего я НЕ хочу делать, так это создавать миллион различных компонентов и загружать их ВСЕ при входе в систему, как многие люди, кажется, говорят