Chargement du contenu de manière dynamique (panneaux) dans un Ext Js Fenêtre d'affichage
Eh bien en fait je cherche sur ce problème, j'ai de nombreux composants avec dinamic choses qui sont écrites dans le côté serveur avec PHP.
En fonction de l'utilisateur mes composants va changer, en fonction du rôle de l'utilisateur.
J'ai donc besoin de connaître toutes les façons/exemples/info sur la façon de le faire.
1 - j'ai utilisé la fonction de charge de EXTJS a, mais il est clairement dit que j'ai l'habitude de charger le script uniquement du texte brut.
2 - j'ai utilisé la fonction eval (), mais im un peu peur o cette approche, comme dans cet exemple caisse de mise en page de composant (statique)
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
]
})
et de mettre à jour le contenu de la mise en page avec js fichiers écrits sur le serveur
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
});
}
de toute autre manière pour que cela soit fait, ce que je NE veux pas faire est de faire un million de différentes composantes et de les charger au moment de la connexion, comme beaucoup de gens semblent dire
OriginalL'auteur GumaTerror | 2010-09-15
Vous devez vous connecter pour publier un commentaire.
Pour répondre à vos questions:
Espère que cette aide
OriginalL'auteur SW4
Vous pourriez charger dynamiquement en JavaScript en utilisant quelque chose comme comme ci-dessous - il y a une centaine de variations sur le web. De cette façon, vous voulez éviter l'appel AJAX et de la manipulation de la réponse et la suite eval).
Il y a un événement. Toutefois, vous cherchez peut-être à la mauvaise place. Mettre le gestionnaire onload dans le fichier chargé, plutôt que dans le fichier de chargement.
OriginalL'auteur Upperstage
Ce que j'ai compris de votre question, c'est que, vous êtes à la recherche pour la dynamique de fichier JS chargeur avec un gestionnaire de rappel c'est à dire la fonction de rappel est appelée uniquement lorsque le fichier est chargé entièrement. J'ai aussi rencontré des problèmes similaires au démarrage et après la recherche d'un beaucoup et en faisant quelques recherche, j'ai développé le code suivant, il permet une grande Dynamique en JS et CSS fichier fonctionnalité de chargement :
Classe ScriptLoader: (le Mettre dans un fichier séparé et de le charger au premier)
Maintenant, il peut être utilisé de cette façon:
Pour les fichiers CSS de chargement :
Qui est vous avez juste besoin de fournir des fichiers css chemin dans un tableau et passer ce tableau à loadCss() fonction en tant qu'argument. Pas de rappel est nécessaire pour les fichiers CSS.
Pour le fichier JS de chargement :
Dans ce cas, de la même manière que vous avez entré CSS fichiers, ici vous avez juste besoin de mettre la pile de fichiers JS dans les scripts option. La fonction de callback n'est appelé que lorsque tous les fichiers JS sont chargés avec succès. Aussi, si dans tous les cas, les fichiers JS sont déjà chargés dans le navigateur (c'est à dire déjà ce code est exécuté une seule fois), ensuite, la commande sera automatiquement à la fonction de rappel.
OriginalL'auteur Swar