IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Chargement dynamique de contenu


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Chargement dynamique de contenu
    Bonjour, me revoila avec mes problèmes tordus

    Pour clarifier les choses, j'utilise le modele MVC de Zend Framework.

    J'ai un layout principal dans lequel il y a un tabContainer.
    Chaque ContentPane de mon tabContainer possede une propriete href avec une url.
    Ainsi, le contenu du contentPane est charge lors de sa premiere selection.
    Le seul soucis, c'est que les elements de type dijit ne sont reconnus que si je spécifie les dojo.require adequat dans mon layout principal (celui du tabContainer).

    Cependant, le faire consisterai a centraliser l'ensemble des dependances du site dans le layout principal, ce qui est anti-MVC. Ca me derange donc de le faire ainsi.

    J'ai beau ajouter un bloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">dojo.require('dijit.form.TextBox');</script>
    dans le code de ma vue spécifique, ça ne fonctionne pas.

    Comment peut-on rajouter dynamiquement des require ? Me trompe-je dans ma façon de faire ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Bonjour,

    Je ne connais pas le modèle MVC de Zend Framework et du coup je ne vois pas en quoi c'ets anti MVC de ne charger qu'une seule fois un objet dans la page principale. Une fois cela fait il n'y a plus besoin d'y faire appel.

    Bref, si vous souhaitez charger les objets dijit dans les contentpane, il vous faut utiliser les "dojox.layout.contentpane" qui permettent l'utilisation de scripts et surtout de "parser" la page chargée.

    Version déclarative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div id='monPane' dojoType="dojox.layout.ContentPane" parseOnLoad='true' style='background-color:#f5eede;' title="Mon pane" href='unePage.php'>
    			<script type="dojo/connect" event="onLoad"> 
    				//mon script au chargement
                                    dojo.require('dijit.form.TextBox');
    			</script>
    			</div>
    Version programmatique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    var page = new dojox.layout.ContentPane({
    			id:'page',
    			region: "center",
    			loadingMessage: "<center>Veuillez patienter, chargement de la page en cours...</center>",
    			errorMessage: "<center>Une erreur est survenue. Impossible de charger le contenu de la page.</center>",
    			executeScripts: "true", 
    			parseOnLoad: 'true', 
    			href: lien
    		});
    		dijit.byId('main').addChild(page);
    		dijit.byId('main').startup();
    		dojo.connect(dijit.byId('page'),"onLoad",function(){
    			dojo.require('dijit.form.TextBox');
    		});

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Bonsoir,

    Merci pour l'info. Cependant, cela ne semble pas fonctionner. La balise script doit elle être dans le code initial du contentPane ou dans la partie chargée dynamiquement (j'ai pour le moment teste cette seconde solution) ?

    Pour revenir son mon concept de l'anti-MVC, je conçois le modèle MVC comme une répartition des taches de façon a ce que chaque vue s'occupe de ce qui la regarde, et ainsi ajouter/modifier/supprimer des modèle/vue/controlleur a notre guise sans impacter le reste du site.

    Hors, en l’état actuel des choses, pour pouvoir charger les différents modules dojo, il faut passer par la vue principale, qui contient le menu. Cela revient donc a centraliser dans la vue du menu l'ensemble du chargement des dépendances des autres vues.

    Ainsi, si je veux ajouter une vue utilisant des modules dojo encore non utilises, je suis oblige de modifier 2 vues (la nouvelle + la vue principale (celle du menu)). C'est ce que je considère comme étant un anti-MVC car nous perdons la notion d’indépendance des modèle/vue/controlleur les uns par rapport aux autres.

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Bonjour,

    La balise script doit être dans la partie initiale du contentPane.
    Ce que j'ai l'habitude de faire c'est créer une fonction dans la partie indépendante (par exemple "chargement") que j'appelle dans la balise script. Ce qui donne l'impression que c'est "indépendant".

    Dans la partie principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div id='monPane' dojoType="dojox.layout.ContentPane" parseOnLoad='true' style='background-color:#f5eede;' title="Mon pane" href='unePage.php'>
    			<script type="dojo/connect" event="onLoad"> 
    				//mon script au chargement
                                    chargement();
    			</script>
    			</div>
    Dans la page chargée par le contentPane :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function chargement(){
               dojo.require('dijit.form.TextBox');
               //etc...
    }
    Il est tout a fait possible d'ajouter des modules dans chaque partie indépendante.

Discussions similaires

  1. [TinyMCE] Probleme dans le cas de chargement dynamique du contenu
    Par deedolycious dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 29/11/2007, 15h39
  2. [jar]chargement dynamique.
    Par Teddy-htk dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 27/04/2006, 15h19
  3. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20
  4. Dll a chargement dynamique
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/06/2003, 22h47
  5. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo