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 :

Création de n popover dynamiquement sur chaque élément d'une liste


Sujet :

AngularJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut Création de n popover dynamiquement sur chaque élément d'une liste
    Bonjour à tous,

    j'ai une liste d'objet, et j'aimerais créer un popover bootstrap en lien avec chacun d'eux dynamiquement.

    Dans mon controller je fais la création des configurations des popovers de la façon suivante :

    Je boucle sur ma liste de carriere et j'appelle à chaque fois cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var creerPopover = function(carriere){
        		  $scope["dynamicPopover" + carriere.indicePopover] = {
          			    templateUrl: 'myPopoverTemplate' + carriere.indicePopover + '.html',
          			    isOpen: false,
          			    open: function open() {
          			    	$scope.closeAllPopover();
          			    	$scope["dynamicPopover" + carriere.indicePopover].isOpen = true;
          			    },
          			    close: function close() {
          			    	$scope["dynamicPopover" + carriere.indicePopover].isOpen = false;
          			    }
          			  };
              };
    Via ng-inscpector je vérifie que j'ai bien tous mes objets $scope["dynamicPopover" + carriere.indicePopover] dans mon scope. En voici un pour exemple :
    Nom : ng-inscpector.png
Affichages : 269
Taille : 6,5 Ko


    Ensuite, dans ma vue html j'effectue une boucle sur ma liste afin de créer le template correspondant ainsi qu'un texte pour ouvrir la popover :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div class="col-xs-12" ng-repeat="car in listeCar">
      	      	<span uib-popover-template="dynamicPopover{{car.indicePopover}}.templateUrl"
    						popover-placement="bottom"
    						popover-is-open="dynamicPopover{{car.indicePopover}}.isOpen"
    						ng-mouseover="openDynamicPopover(car.indicePopover)"
    						ng-click="openDynamicPopover(car.indicePopover)">
    				Bonjour template {{car.indicePopover}} !
    				<script type="text/ng-template" id="myPopoverTemplate{{car.indicePopover}}.html">
    					<div>Coucou</div>
    				</script>
    			</span>
      	  	  </div>
    Dans mon navigateur, le code html généré me convient :
    Nom : html-genere.png
Affichages : 265
Taille : 25,3 Ko

    Mais lorsque je passe sur mon élément "Bonjour template 84 !" par exemple, j'ai l'erreur suivante :
    GET http://localhost:8080/*****/myPopoverTemplate84.html 404 (Not Found)

    Qu'est ce que j'ai mal fait au niveau de la création de la popover ?

    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    Complément d'information :

    Le code généré suivant me semble bon dans mon navigateur :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/ng-template" id="myPopoverTemplate84.html">
    Par contre si au lieu de :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/ng-template" id="myPopoverTemplate{{car.indicePopover}}.html">
    je met en dur dans ma vue html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/ng-template" id="myPopoverTemplate84.html">
    j'ai bien ma popover qui s'affiche ....


    Pour résumé mon problème :
    pourquoi lorsque je met en id de ma template directement "myPopoverTemplate84.html" ça marche mais lorsque je met en id une chaîne avec paramètre "myPopoverTemplate{{car.indicePopover}}.html" ça ne marche pas ?
    (Alors qu'au final la valeur affichée est aussi "myPopoverTemplate84.html" quand je regarde le code de la page)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    Mea culpa pour ma bêtise ...

    Je ne comprend pas pourquoi je m'obstine à créer un template pour chaque popover à afficher, sachant que le contenu est le même à chaque fois à part les parties {{}}...

    J'ai donc renommer ma template avec un id "myPopoverTemplate.html" et dans ma boucle créant la configuration des popovers j'ai mis la même tout le temps la même templateUrl "myPopoverTemplate.html" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var creerPopover = function(carriere){
        		  $scope["dynamicPopover" + carriere.indicePopover] = {
          			    templateUrl: "myPopoverTemplate.html",
          			    isOpen: false,
          			    open: function open() {
          			    	$scope.closeAllPopover();
          			    	$scope["dynamicPopover" + carriere.indicePopover].isOpen = true;
          			    },
          			    close: function close() {
          			    	$scope["dynamicPopover" + carriere.indicePopover].isOpen = false;
          			    }
          			  };
              };
    Désolé du dérangement et merci à ceux qui ont pris le temps de me lire et peut être d'y réfléchir...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/03/2015, 15h11
  2. Réponses: 4
    Dernier message: 20/03/2013, 18h23
  3. Pointeur sur un élément d'une liste
    Par azerty25 dans le forum Général Python
    Réponses: 3
    Dernier message: 18/11/2007, 12h44
  4. FAQ : Comment alterner les couleurs de chaque élément d'une liste déroulante ?
    Par yoghisan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/06/2007, 14h15
  5. Réponses: 6
    Dernier message: 17/07/2006, 13h56

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