CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[AngularJS] Mauvaise redirection d'un carrousel

Nappage
Nappage
Niveau 10
11 janvier 2018 à 16:03:52

Bonjour,

Tout d'abord, je tiens à préciser que je suis en stage en entreprise,

héritant du travail laborieux d'ancien stagiaires, je dois apporter des modifications sur un des sites que l'entreprise utilise en interne,

Ayant que très peu de notion en Javascript / AngularJS, j'ai essayé de décortiquer le code afin de le comprendre.

Mon problème est le suivant : il existait un carrousel/slider d'image sur la page d'accueil, ainsi qu'une vidéo. La demande est de crée un carrousel des miniatures de ces vidéos (ce que j'ai réussi à faire), mais cependant, quand je clique sur une miniature elle devrait "ouvrir" la vidéo sur la page, le problème est que chaque miniature envoie vers la même vidéo.

Je me doute bien que le soucis est entre mon clavier et ma chaise, mais je n'arrive pas à le trouver, voici les différents bouts de code qui vous seront je pense nécessaire :

<!--- Page d'accueil -->
 
<div class="col-lg-5 col-md-5 col-sm-6 col-xs-12 contVideo">
            <div>
              <div class="video" ng-controller="videoCtrl">
                <slick class="carousel" infinite="true" settings="slickConfig">
                <div ng-repeat="data in video" class="contentVideo" ng-style="{'background-image':'url({{data.miniature}})'}">
                  <a data-toggle="modal" data-target="#myModal">
                    <img ng-src="images/index/video/BoutonPlay.png" alt="Play" />
                  </a>
                  <div class="descriptionVideo">
                    <p>{{data.legende}}</p>
                  </div>
                </div>
           </slick>
                <div class="modal fade" id="myModal" ng-repeat="data in video">
                  <div class="modal-dialog" role="document">
                    <div class="modal-content">
                      <div class="modal-header">
                        <button ng-attr-type="button" class="close" data-dismiss="modal">x</button>
                      </div>
                      <div class="modal-body">
                     <video id="video1" ng-src="{{data.src}}" controls="controls" width="550px" height="300px" poster="{{data.miniature}}" preload="metadata"></video>
                      </div>
                    </div>
                  </div>
                </div>
 
              </div>
            </div>
          </div>

app.controller("videoCtrl", function($rootScope, $scope, $window) {
 
  // INFORMATION GENERAL VIDEO
  // legende = "resume" ou titre de la video
  // src = adresse de la video
  // miniature =  background video
  $scope.video = [
    {
      "legende": "CECI EST LA VIDEO 1",
      "src": "images/index/video/video1.mp4",
      "miniature": "images/index/video/videoMiniature.png"
    },
    {
      "legende": "CECI EST LA VIDEO 2",
      "src": "images/index/video/video2.mp4",
      "miniature": "images/index/video/miniature2.png"
    },
    {
      "legende": "CECI EST LA VIDEO 3",
      "src": "images/index/video/video3.mp4",
      "miniature": "images/index/video/miniature3.jpg"
    }
 
  ];
 
  // reinitialise le scroll au changement de vue
  $rootScope.$on('$routeChangeSuccess', function() {
    var interval = setInterval(function() {
      if (document.readyState == 'complete') {
        $window.scrollTo(0, 0);
        clearInterval(interval);
      }
    }, 10000);
  });
 
  // Scope slider + img slider + config slider
  $scope.slickConfig = {
    prevArrow: '<img src="images/index/slider/prev.png"class="slick-prev"/>',
    nextArrow: '<img src="images/index/slider/next.png"class="slick-next"/>',
    autoplay: true,
    draggable: true,
    autoplaySpeed: 10000      //1000 egal 1 second
  }
 
 
});

Il y a surement des erreurs et/ou des choses en trop, j'avoue avoir repris le code des anciens stagiaires qui avaient déjà fait un carrousel sur cette même page et essayé d'adapter au besoin,

Je reste disponible pour toutes questions,

Un grand merci à vous

Nappage
Nappage
Niveau 10
12 janvier 2018 à 11:42:06

:up:

Thymotep
Thymotep
Niveau 10
12 janvier 2018 à 15:09:04

Hello,

Merci de ne pas faire de :up: quand tu es en première page.
Ce forum n'est pas très fréquenté, et il n'y a encore moins de monde ici qui fait de l'Angular à ma connaissance.

Bon courage :ok:

ryviel
ryviel
Niveau 5
12 janvier 2018 à 22:02:04

N'ayant pas monté d'environnement pour tester ton code, tout ce qui va suivre n'est que supposition.

Le problème vient de :
<a data-toggle="modal" data-target="#myModal">
Et :
<div class="modal fade" id="myModal" ng-repeat="data in video">
Un id doit être unique sur une page HTML, alors que ton ng-repeat va créer autant de <div id="myModal"> que tu as de vidéos.
Donc quand tu cliques sur ton lien, la première <div id="myModal"> rencontrée dans l'arbre de ta page HTML sera ouvert.

Tu as plusieurs choix:

  • Faire en sorte d'avoir des id différents pour chaque vidéos et changer le <a> pour qu'il pointe sur les bons id
  • Appeler une fonction de ton controller lors d'un clic sur le lien (<a ng-click="maFonction(data)"> pour y stocker la référence de la vidéo sélectionnée. Et dans la partie HTML, n'avoir qu'une seule modale (pas de ng-repeat) contenant un seul lecteur video, dont la source (ng-src) serait celle de la vidéo préalablement sélectionnée.
Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment