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

Flex Discussion :

Cairngorm, les variables, et les vues : comment bien faire


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut Cairngorm, les variables, et les vues : comment bien faire
    Bonjour,

    je découvre actuellement le framework Cairngorm, et si j'ai bien compris l'idée du truc, comment l'implémenter et tout, il me reste une petite interrogation :

    Comment lutter contre la prolifération de variables dans le ModelLocator ?

    Regroupez-vous vos variables dans des sous objets ? (Par exemple un objet de type LoginFormModel) Car sinon je trouve que ça devient très vite crados toutes ces variables qu'on va binder un peu partout sur chaque vue.

    Autre chose, comment gérez vous proprement (càd sans rien briser de la philosophie Cairngorm) la remise à zéro d'un champ, sa prise de focus, etc ? Je souhaite par exemple que quand l'utilisateur se logue, une routine java return true ou false selon la valeur de txtLogin.text et txtPassword.text. Ca c'est OK, l'event est dispatché, puis intercepté par le frontcontroller, la commande est executée, java répond bien, c'est chouette

    Mais comment faire en cas de return false (càd ici login incorrect) pour vider par exemple le contenu du champ txtPassword, et lui redonner le focus ? Dois-je laisser trainer une référence de ma vue quelque part pour l'attaquer et lancer un setFocus() ? J'ai conscience que dans ce cas précis je pourrai faire cette remise à zéro et cette prise de focus en permanence (juste avant de dispatcher l'évènement), que le login soit bon ou pas, mais le problème se posera réellement sur d'autres cas

    En question bonus : j'aimerai laisser un label au bas de chacune de mes vues qui sera bindé sur une variable du style {monModel.errorMessage}. Sauf que j'aimerai ne pas avoir à remettre à blanc cette variable entre chaque changement de vue (car si j'oublie de le faire, une vue pourrait afficher un vieux message d'erreur peut-être totalement hors contexte.

    Comment gérez-vous ce problème habituellement ? Une variable errorMessage propre à chaque vue, une fonction getError() qui retournerait puis viderait le contenu de la variable après chaque appel ?

    Bref, je ne sais pas si j'ai été très clair, mais merci pour vos éclaircissements.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Bonjour,

    Comment lutter contre la prolifération de variables dans le ModelLocator ?
    Malheureusement, le ModelLocator est la faiblesse de Cairngorm car il s'agit d'un vrai modèle fourre tout. J'ai trouvé un article expliquant comment utiliser le ModelLocator proprement : http://blog.kapit.fr/ria/2008/09/03/...tor-cairngorm/

    Autre chose, comment gérez vous proprement (càd sans rien briser de la philosophie Cairngorm) la remise à zéro d'un champ, sa prise de focus, etc ? Je souhaite par exemple que quand l'utilisateur se logue, une routine java return true ou false selon la valeur de txtLogin.text et txtPassword.text. Ca c'est OK, l'event est dispatché, puis intercepté par le frontcontroller, la commande est executée, java répond bien, c'est chouette

    Mais comment faire en cas de return false (càd ici login incorrect) pour vider par exemple le contenu du champ txtPassword, et lui redonner le focus ? Dois-je laisser trainer une référence de ma vue quelque part pour l'attaquer et lancer un setFocus() ? J'ai conscience que dans ce cas précis je pourrai faire cette remise à zéro et cette prise de focus en permanence (juste avant de dispatcher l'évènement), que le login soit bon ou pas, mais le problème se posera réellement sur d'autres cas
    Pour vider les champs, tu peux utiliser ViewHelper qui permet d'appeler des méthodes de la vue depuis ta commande : http://flexcairngorm.googlecode.com/...ewLocator.html
    Je n'ai pas trouvé de documentations sur le net mais si tu as besoin d'aide tu peux ouvrir une nouvelle discussion .

    En question bonus : j'aimerai laisser un label au bas de chacune de mes vues qui sera bindé sur une variable du style {monModel.errorMessage}. Sauf que j'aimerai ne pas avoir à remettre à blanc cette variable entre chaque changement de vue (car si j'oublie de le faire, une vue pourrait afficher un vieux message d'erreur peut-être totalement hors contexte.
    Pour ta question bonus, il faudrait que toutes tes vues héritent d'une vue mère qui contient ton label. Lorsque ta viewstack change de vue, l'evénement viewChanged (je crois) est appelé. Tu t'abonnes à cet évènement et tu vides le label à chaque appel.
    J'espère que j'ai été claire et que ma réponse t'aidera.

    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    Citation Envoyé par ellene Voir le message
    Bonjour,



    Malheureusement, le ModelLocator est la faiblesse de Cairngorm car il s'agit d'un vrai modèle fourre tout. J'ai trouvé un article expliquant comment utiliser le ModelLocator proprement : http://blog.kapit.fr/ria/2008/09/03/...tor-cairngorm/



    Pour vider les champs, tu peux utiliser ViewHelper qui permet d'appeler des méthodes de la vue depuis ta commande : http://flexcairngorm.googlecode.com/...ewLocator.html
    Je n'ai pas trouvé de documentations sur le net mais si tu as besoin d'aide tu peux ouvrir une nouvelle discussion .



    Pour ta question bonus, il faudrait que toutes tes vues héritent d'une vue mère qui contient ton label. Lorsque ta viewstack change de vue, l'evénement viewChanged (je crois) est appelé. Tu t'abonnes à cet évènement et tu vides le label à chaque appel.
    J'espère que j'ai été claire et que ma réponse t'aidera.

    Bon courage
    Bonjour,

    Désolé pour le délai , j'avais totalement zappé ce post, même si le problème est toujours d'actualité.

    Ta réponse est vraiment pertinente en tout point, et je t'en remercie chaudement !

    Par contre, j'ai cru lire que ViewHelper était deprecated ? C'est dommage car ça semble répondre parfaitement à mon besoin

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    Citation Envoyé par cho7 Voir le message
    Bonjour,

    Désolé pour le délai , j'avais totalement zappé ce post, même si le problème est toujours d'actualité.

    Ta réponse est vraiment pertinente en tout point, et je t'en remercie chaudement !

    Par contre, j'ai cru lire que ViewHelper était deprecated ? C'est dommage car ça semble répondre parfaitement à mon besoin
    Je confirme, c'est deprecated. En cherchant un peu plus, j'ai vu une autre manière de faire qui me plait bien.

    En gros, ma vue login lorsqu'elle va se charger va également ajouter un eventlistener sur un evenement du cairngormdispatcher du genre "LOGIN_FAIL". Quand on se loggue, ca dispatch un evenement "LOGIN", et quand la commande associée à fini son boulot, elle dispatche LOGIN_FAIL

    Comme ça la vue est au courant, elle appelle la fonction associée, qui vide le champ password, et lui redonne le focus.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Par défaut
    Citation Envoyé par cho7 Voir le message
    Je confirme, c'est deprecated. En cherchant un peu plus, j'ai vu une autre manière de faire qui me plait bien.

    En gros, ma vue login lorsqu'elle va se charger va également ajouter un eventlistener sur un evenement du cairngormdispatcher du genre "LOGIN_FAIL". Quand on se loggue, ca dispatch un evenement "LOGIN", et quand la commande associée à fini son boulot, elle dispatche LOGIN_FAIL

    Comme ça la vue est au courant, elle appelle la fonction associée, qui vide le champ password, et lui redonne le focus.
    Bon bah j'ai lu quelque part qu'il ne fallait pas trop utiliser les classes du CairngormDispatchEvent car ce n'était pas vraiment fait pour et que des choses pouvaient changer dans le futur.

    Du coup j'ai créé dérivé l'Eventdispatcher de flex pour créer mon mien à moi, et ça marche nickel.

    Voilou

Discussions similaires

  1. Réponses: 21
    Dernier message: 18/11/2008, 14h36
  2. les clips et les variables
    Par marocleverness dans le forum Flash
    Réponses: 5
    Dernier message: 26/11/2006, 00h52
  3. Problèmes avec les variables et les unités
    Par christoufe dans le forum EDI
    Réponses: 2
    Dernier message: 22/01/2006, 16h22
  4. j'ai un problème avec les évenement et les variables !!
    Par cvb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/12/2005, 11h03

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