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 :

Parcours d’une collection


Sujet :

AngularJS

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Points : 73
    Points
    73
    Par défaut Parcours d’une collection
    Salutations,

    Une fois de plus, je m’adresse à vous dans une profonde détresse car j’ai encore un problème avec AngularJS, recevez toutes mes excuses…

    La question me paraissait pourtant facile à résoudre (comme d’habitude), mais je n’y arrive pas.

    Je vais mettre un Plunker, mais d’abord, je résume la situation :

    Je veux parcourir une collection d’objets (j’ai pris un exemple d’ensemble trouvé sur internet), avec la nouvelle convention d’écriture AngularJS, j’ai simplement mis les données dans une
    variable. J’arrive à récupérer la première couche de données (c’est à dire user), mais pas uniquement les noms. Je me suis souvenu qu’on ne pouvait pas faire la manipulation aussi simplement que {{ user.name }} ; il faut créer une variable vide portant le nom de la première variable plus de la première couche. Mais ça n’a pas fonctionné, la première couche ne s’affiche plus et cela me parait logique vu le code écrit.

    Quoi qu’il en soit, je ne sais plus ou ne me souviens plus comment on fait.

    PLUNKER

    Merci de votre lumière.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 983
    Points : 44 175
    Points
    44 175
    Par défaut
    Bonjour,
    ng-repeat ne fait pas l'affaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr ng-repeat="item in items">
        <td>{{ item.propriete_1 }}</td>
        <td>{{ item.propriete_2 }}</td>
        <!-- la suite -->

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Points : 73
    Points
    73
    Par défaut
    Merci pour ta réponse, mais, malheureusement, rien ne change.

    Je viens de trouver ! En fait, je ne sais pas si c’est tout à fait normal (je suppose que oui quand même parce que un code dont les règles changeraient parfois, faudrait pas abuser), mais il fallait faire :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr ng-repeat="user in c.test.users" >
    	<td>{{ user.name }}</td>
    	<td>{{ user.id }}</td>
    </tr>

    C’est presque ta réponse en fait. Encore merci :)

    Néanmoins, un autre problème se met en travers de ma route. J’ai une autre collection

    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    "users" : [{
        "names ": [{
            "name": "Joe Bloggs",
            "name": "Machin T"
        }],
        "id": "82047392"
    },{
        "names": [{"name": "John Doe"}],
        "id": "65198013"
    }]

    Et j’aimerais accéder au différents nom par la même méthode que précédemment.
    J’ai écris :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <tr ng-repeat="user in c.data.users">
    	<td>{{ user.names.name }}</td>
    </tr>

    Mais ça ne semble pas être la solution ; d’ailleurs quand j’enlève le user.names.name et laisse user, Joe Bloggs n’apparaît pas (il ne prend que le deuxième nom du sous ensemble names à chaque fois).
    Pour ce petit problème, il suffisait d’écrire :

    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    "users" : [{
       "names ": [{
            "name": "Joe Bloggs"},{
            "name": "Machin T"},{
            "name": "A B"
        }],
        "id": "82047392"
      },{
        "names": [{
            "name": "John Doe"},{
            "name": "Truc C"
    }],
    "id": "65198013"
    }]

    Quoique, si je fais user.names, il m’affiche seulement la deuxième série de noms. Et je ne parvient toujours pas à afficher uniquement les noms dans le tableau…

    Je lis qu’il faut peut être utiliser une boucle ou des ng-repeat imbriqués, peut être même par indexation, pour accéder à tout ce à quoi je n’arrive pas à accéder.

  4. #4
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Salut,
    Dans ton objet, tu as un tableau d'utilisateurs.
    En AngularJS, pour boucler sur un tableau, on utilise un ng-repeat comme te l'a indiqué NoSmoking.
    Après, tu as ajouté des tableaux imbriqués dans l'objet. Autrement dit, tu as un tableau de noms dans chaque objet user.
    Puisque tu utilise un ng-repeat pour boucler sur les users, et bien il faudrait utiliser la même chose pour les noms. Et tu utilise donc des ng-repeat imbriqués.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <tr ng-repeat="user in c.test.users">
        <td>
            <ul>
                <li ng-repeat="name in user.names">{{name}}</li>
            </ul>
        </td>
        <td>{{ user.id }}</td>
    </tr>
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Points : 73
    Points
    73
    Par défaut
    Oui, génial :)


    Du coup j’ai fait ça :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><span ng-repeat="name in user.names">{{ name.name + ' ' }}</span></td>

    et j’ai uniquement les noms…mais seulement John Doe et Truc C (ce qui, qu’on se le dise, n’est pas cool).

  6. #6
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Autre remarque,
    Je sais pas si tu as étudié les diagrammes d'états... mais tu peux représenter chaque tableau des noms (names) sous forme d'état. Car selon son contenu, un tableau peut avoir plusieurs états. Pareil pour les objets.
    Si tu utilise donc un tableau pour la liste des noms, ton état n'est pas déterministe. Il vaut mieux utiliser un objet car on connait les différents noms que peut avoir une personne. Autrement dit, la taille de ton tableau ou le nombre de noms est connu, alors qu'on peut quand même y ajouter deséléments (c'est pourquoi on parle de non déterminisme).
    Tu peux donc modifier ton objet comme suit (et bien sûr n'utiliser qu'un seul ng-repeat) :
    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
    16
    17
    18
    19
    20
    {
        "users": [
            {
                "name": {
                    "first": "",
                    "last": "",
                    "nickname": ""
                },
                "id": "82047392"
            },
            {
                "name": {
                    "first": "",
                    "last": "",
                    "nickname": ""
                },
                "id": "65198013"
            }
        ]
    }
    et n'oublie pas le bouton résolu si ton problème l'est
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

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

Discussions similaires

  1. [AC-2010] Parcours d'une collection d'objets sélectionnés.
    Par JOHN14 dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/05/2014, 20h17
  2. Parcours d'une collection Hashtable en VBA
    Par zardoz45 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/04/2012, 16h04
  3. Réponses: 10
    Dernier message: 11/06/2010, 08h34
  4. Réponses: 2
    Dernier message: 05/12/2007, 22h16
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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