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 :

ng-model et dropdownLists


Sujet :

AngularJS

  1. #1
    Membre du Club Avatar de Yodabis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 55
    Points : 58
    Points
    58
    Par défaut ng-model et dropdownLists
    Bonjour, j'ai une question:

    J'ai deux listes déroulantes bindées. La première avec une liste de string et la seconde avec une liste d'objets (Id + Nom). ID=Guid et Nom=string

    Je charge la page avec un SelectedItem présélectionné pour chacune via ng-model.

    La première affiche correctement l'élément présélectionné mais pas la seconde avec l'objet.

    voici mon code:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select  id="datacircuit" name="" ng-model="model.SelectedCircuit" ng-options="item.Name for item in model.Circuits" key="Id" >
    	<option value="">Selectionner</option>
    </select>

    Pouvez-vous m'aider ?

    Merci bcp d'avance, Yoda




    edit:

    Bizarrement en faisant ceci dans le Ctler, ca fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var ItemIndex = ...// (un find fait côté serveur)
    $scope.model.SelectedItem = $scope.model.Items[ItemIndex]
    Il doit remapper le currentitem avec l'élément de la liste... il ya bien qqchse de prévu pour éviter de devoir faire ça non ?

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 36
    Points : 71
    Points
    71
    Par défaut
    je suppose que tu as voulu écrire et non Car on ne voit pas d'où sort SelectedItem dans ton HTML.

    Sinon oui: on doit initialiser le <select> dans le Controller. Certains utilisent un ngInit mais je n'aime pas accumuler les Directives sur un tag (ca devient dur a debugger entre ng-model ng-options...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scope.model.SelectedCircuit = machin;
    ici machin est un object Circuit de forme {"Id": ii, "Nom": nn}. La directive ne peut pas deviner l'objet car elle ne voit plus son Prototype Javascript. Le scope peut voir les noms des objets du scope parent mais plus forcément leur Prototype. En faisant l'initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scope.model.SelectedCircuit = $scope.model.Circuits[ItemIndex]
    tu lui redonnes son Prototype.

  3. #3
    Membre du Club Avatar de Yodabis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 55
    Points : 58
    Points
    58
    Par défaut
    Bonjour, merci de ta réponse,

    c'est en effet la ou j'en suis arrivé comme conclusion aussi.

    Yoda

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 36
    Points : 71
    Points
    71
    Par défaut
    j ai beaucoup galere sur les listes. Car en general la liste d'options et la valeur selectionnée viennent du serveur en même temps. C'est comme cela que j'ai approfondi sur cette histoire de $scope.

    Par exemple meme si j'envoyais la liste d'options en précisant laquelle était selectionnée, le scope du <select> ne pouvait pas le voir et se positionner automatiquement sur le bon indice.
    Et quand j'y pense Angular n'est pas toujours pratique pour faire une interface graphique.

  5. #5
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Citation Envoyé par devyreham Voir le message
    j ai beaucoup galere sur les listes. Car en general la liste d'options et la valeur selectionnée viennent du serveur en même temps. C'est comme cela que j'ai approfondi sur cette histoire de $scope.

    Par exemple meme si j'envoyais la liste d'options en précisant laquelle était selectionnée, le scope du <select> ne pouvait pas le voir et se positionner automatiquement sur le bon indice.
    C'est tout à fait réalisable. Et puis avec l'héritage des scopes je vois pas le problème.

    J'ai fait fonctionné ce binding pour un paramètre qui contient une valeur (clé) et une liste de valeurs acceptées (objets clé/valeur):

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <select class="form-control" ng-show="param.hasValues()" ng-model="param.value" ng-options="value as key for (key, value) in param.values"></select>

    Citation Envoyé par devyreham Voir le message
    Et quand j'y pense Angular n'est pas toujours pratique pour faire une interface graphique.
    ça c'est une blague

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 36
    Points : 71
    Points
    71
    Par défaut
    Meme dans ce cas il n'y a pas de valeur par defaut sans Controller.

    La valeur affichée est celle du ngModel. Si est inexistant le <select> ne peut pas choisir dans la liste des options.

    Sinon bien sur c'est realisable en ecrivant ta propre directive ou comme je disais avec ngInit. Tu utilises quelle version? J'en suis encore a 1.08.

  7. #7
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Sans controller il n'y a ni valeur par défaut ni liste de valeurs à sélectionner, je vois pas trop l’intérêt.

    Le rôle du controller est bien (en plus de gérer la logique) d'initialiser les modèles de son scope.

    Citation Envoyé par http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller
    Use controllers to:
    • Set up the initial state of a scope object.
    • Add behavior to the scope object.

Discussions similaires

  1. Liens entre DropDownList et propriétés du model
    Par nabil81h dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 02/09/2014, 10h09
  2. DropDownList à partir du model
    Par IntelliConcept dans le forum Entity Framework
    Réponses: 2
    Dernier message: 21/03/2012, 09h49
  3. [C#] DropDownList dans un Table dynamiquement
    Par Mourad dans le forum ASP.NET
    Réponses: 12
    Dernier message: 30/04/2004, 15h09
  4. [C#] Pb DropDownList
    Par alexischmit dans le forum ASP.NET
    Réponses: 3
    Dernier message: 29/04/2004, 14h37
  5. programmation reseau - couche 2 du modele osi
    Par sahor dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h33

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