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 :

Modal qui bug


Sujet :

AngularJS

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut Modal qui bug
    Bonjour à tous,

    C'est la première fois que j'utilise des modals, ça à l'air plutôt simple, mais evidemment, rien ne fonctionne comme je le voudrais.
    J'ai repris le code de ce JsFiddle : http://jsfiddle.net/dwmkerr/8MVLJ/

    controller
    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
    21
    app.controller("ControllerDetailsRequest", function($rootScope, $scope, $cookies, $routeParams, $http, StockUserData, StockRequestData, ModalService){
     
    $scope.Report = function () { // Signale la demande d'aide       
        ModalService.showModal({
                templateUrl: 'partials/modal.html',
                controller: "ModalController"
            }).then(function(modal) {
                modal.element.modal();
                modal.close.then(function(result) {
                });
            });
      };
    });
     
    app.controller('ModalController', function($scope, close) {
     
     $scope.close = function(result) {
      close(result, 500); // close, but give 500ms for bootstrap to animate
     };
     
    });
    le HTML
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form ng-submit="Report()">
       <span ng-bind="report_message"></span>
       <button type="submit" class="btn btn-danger profil-btn"><i class="fa fa-warning"></i>  Signaler</button>
    </form>

    Le modal.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
    16
    17
    <div class="modal fade">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" ng-click="close('Cancel')" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title">Yes or No?</h4>
          </div>
          <div class="modal-body">
            <p>It's your call...</p>
          </div>
          <div class="modal-footer">
            <button type="button" ng-click="close('No')" class="btn btn-default" data-dismiss="modal">No</button>
            <button type="button" ng-click="close('Yes')" class="btn btn-primary" data-dismiss="modal">Yes</button>
          </div>
        </div>
      </div>
    </div>

    En plus des problèmes de CSS dû à mon Template, il y a des bugs au niveau du modal.
    Si je clique en dehors du modal, il disparait et le shadow aussi, mais il n'est pas réellement fermé.
    Du coup, en répétant cette action, mon HTML s'allonge de plusieurs <div> à chaque fois.
    Je précise que sur le JsFIddle, cela n'arrive pas. Cliquer en dehors du modal ne fait rien.


    Donc :- Comment faire pour que le modal se ferme seul après s'être affiché après 3 secondes par exemple.
    - Comment faire pour que le modal agisse normalement (comme sur le JsFiddle)
    Images attachées Images attachées  

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    je pense qu'il est impératif que tu règles ton problème de CSS pour remettre de l'ordre dans tes couches avant de regarder la suite.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Après plusieurs modification du CSS, j'arrive à quelque chose de bien plus propre.

    J'ai touché au z-index de la <div> qui fait un shadow.
    J'ai mis un margin-top : 50%

    Nom : pdt.png
Affichages : 896
Taille : 35,0 Ko
    (Sur l'image, je cache la majeur partie du site car il s'agit d'un projet pas encore breveté.)

    Il ne reste donc plus que 2 soucis :
    - Le modal qui disparait tout seul alors que ce n'est pas censé le faire. Il disparait mais ne se ferme pas.
    - Faire disparaitre le modal après s'être affiché environ 3 secondes.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Utilise un « setTimeout » pour fermer ta modal, et en reprenant l'exemple fourni dans ton JsFiddle cela pourrait donner
    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
    app.controller('Controller', function($scope, ModalService, $timeout){
        $scope.show = function () {
            ModalService.showModal({
                templateUrl: 'modal.html',
                controller: 'ModalController'
            }).then(function (modal) {
                // ajout d'un setTimeout
                $timeout(function () {
                    modal.element.modal('hide');
                }, 3000);
     
                modal.element.modal();
                modal.close.then(function (result) {
                    $scope.message = 'You said ' + result;
                });
            })
        };
    });

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Le SetTimeout fonctionne parfaitement.
    Mais je ne comprends toujours pas pourquoi le modal se ferme si l'on clique à côté.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Bonjour,

    C'est dans les classes liés à Bootstrap. Regarde la classe modal ou la classe fade, tu dois avoir la gestion que tu cherches dedans.
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

Discussions similaires

  1. Problème de fenêtre modal qui ne stoppe pas le code en arrière plan
    Par Sebcaen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/09/2006, 13h43
  2. innerHTML qui bug sous IE
    Par krolineeee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 16h28
  3. [Ouverture fichier] Chemin qui bug !
    Par nebule dans le forum Langage
    Réponses: 15
    Dernier message: 18/05/2006, 09h59
  4. [2.0] Get sur une variable d'application qui bug ??
    Par brousaille dans le forum ASP.NET
    Réponses: 8
    Dernier message: 14/03/2006, 05h08
  5. [RCP]tuto Ibm qui bug
    Par sglug dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 03/10/2005, 15h11

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