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

AngularJS Discussion :

Comment faire passer des informations d'une page à une autre


Sujet :

AngularJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Par défaut Comment faire passer des informations d'une page à une autre
    Bonjour, bonjour,

    Etant toujours aussi fort avec Angular JS, je n'arrive pas à récupérer une info d'une page vers une autre. Je m'explique,
    j'ai un tableau comportant une liste d'objet. Dans ce tableau j'affiche le minium d'information, par exemple le nom.

    table.html

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <div ng-controller="X">
    <table id="tab-result" class="table table-bordered table-striped" ng-show="instruments.length > 0 ">
        <thead>
            <tr>
                <th><a ng-click="predicate = 'name'; reverse=!reverse">Valeurs</a></th>
    	  </tr>
        </thead>
        <tbody>
            <tr ng-repeat="i in instruments | orderBy:predicate:reverse | startFrom: pagination.page * pagination.perPage | limitTo: pagination.perPage">
                <td><div ng-controller="SyntheseCtrl"><a href="#/synthese/init" ng-click="setInstrumentSelected(i)">{{i.name}}</a></div></td>
            </tr>
        </tbody>
    </table>
    </div>

    J'aimerais, lorsque je clique sur le nom de l'un de mes objets, arriver sur page qui me donne une description détaillée de celui-ci. Mais je n'arrive pas à garder mon objet en mémoire.

    J'ai créé un controller "X" qui permet de charger ma liste d'objet et de remplir mon tableau, et un autre pour "SyntheseCtrl" qui normalement devrait garder mon objet en mémoire mais sans succès.

    J'utilise coté Serveur Spring MVC, si je clique sur un nom d'objet, je suis redirigé vers <a href="#/synthese/init" >
    Voici la fonction de mon controller :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Controller
    @RequestMapping("/synthese")
    public class SyntheseController {
    	@RequestMapping("/init")
    	public String getSynthesePartialPage(final ModelMap modelMap) {
    		return "synthese/fiche";
    	}
    }

    Celui-ci me renvoie sur la page où je veux obtenir une description détaillée de mon objet. sauf que, bien sûr, je n'ai plus l'objet sélectionné...
    Comment puis-je faire cela ?
    Dois-je passer par Spring ? Si oui, avez-vous une piste, un exemple ?
    Sinon peut-on le faire uniquement avec angular js ? C'est pour ça que j'ai créé le controller "SyntheseCtrl" qui enregistre mon objet sélectionné grâce à la méthode setInstrumentSelected(i). Mais sans succès.

    En attente de votre aide, je vous souhaite un bon week end.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 31
    Par défaut
    Salut, moi aussi je débute sur AngularJS.

    Je viens de créer un plunker pour essayer quelques trucs et en m'inspirant du tuto officiel (que tu peux trouver ici) .

    Tu peux passer des paramètres d'une vue à une autre en utilisant le module ngRoute (qui n'est pas distribué dans le core du framework). L'idée c'est de faire du routing en fonction de ton url en passant la vue à afficher ainsi que le contrôleur à utiliser.

    Je t'encourage à regarder le plunker que j'ai linké plus haut et aussi à regarder le tuto.

    PS: je sais l'ajout de données dans le contrôleur c'est moche, c'est juste pour l'exemple du routing.

    Bon weekend et courage

  3. #3
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Salut,

    A tout hasard, un membre vient de nous proposer un tutoriel AngularJS - Spring.

    Peut-être qu'il s'y trouve des éléments de réponses.

  4. #4
    Membre expérimenté
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Par défaut
    Je ne comprends pas pourquoi il y aurait un aller-retour au serveur. Les données complètes sont chargées si j'ai bien compris ?

    Les contrôleurs dans Angular ne sont pas faits pour conserver les données, au contraire, ils sont ré-exécutés (et les données sont perdues) à chaque passage d'une vue à l'autre. Une solution est de stocker les données à partager (le modèle de l'application en fait) dans un service.

    Ensuite, comme le suggère Peps16, on peut mettre l'ID dans l'URL, le récupérer dans la vue des détails, puis questionner le service des données pour récupérer ce dont on a besoin.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Par défaut
    Merci pour vous conseils, j'essaye de mettre quelque chose de propre en place et je reviens vers vous.

  6. #6
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Ton problème est plus conceptuel que lié à un bug ou à un code.

    Une application Angular c'est une application à part, complètement dissociée du serveur de données (généralement un serveur publiant des services REST).

    Je ne sais pas ce que dit monsieur Tahé sur le sujet je vais aller voir mais il faut vraiment penser son application Angular comme du client lourd en mode client/serveur.

    Là ton problème c'est que ton serveur SPRING cherche à servir une vue, ce qui n'est pas du tout son job (il ne doit servir que les données).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire passer des informations dans une popup
    Par zyanya dans le forum Flex
    Réponses: 4
    Dernier message: 12/05/2011, 17h16
  2. comment faire appraitres des news dans la page d'accueil
    Par info007 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/09/2008, 23h08
  3. Réponses: 2
    Dernier message: 28/08/2008, 12h27
  4. [Debutant] comment faire passer des donnée ???
    Par cyrill.gremaud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/01/2006, 22h28
  5. Réponses: 5
    Dernier message: 08/03/2004, 10h28

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