Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3052 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [Angularjs] Problème avec directive

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Angularjs] Problème avec directive

n°2260252
OrcusZ
Pro AMD | .Net lover
Posté le 13-06-2015 à 11:29:57  profilanswer
 

Bonjour,

 

Je suis entrain de faire un site web en utilisant le framework angularjs.

 

Je suis entrain de faire le formulaire d'inscription. Ce formulaire ne peut être envoyé (ng-disable sur le bouton du formulaire ) uniquement si tous les champs sont valides. Le problème c'est que depuis que j'utilise une directive pour vérifier que l'email n'existe pas en base, le bouton du formulaire reste grisé.

 

Par contre les messages pour l'email disparaissent et apparaissent correctement.

 

Voici le formulaire :

 
Code :
  1. <form name="createUser" class="form-horizontal createUserForm" novalidate >
  2.             <h3>Inscription</h3>
  3.             <div class="form-group">
  4.                 <fieldset>
  5.                 <legend>Informations:</legend>
  6.                     <label for="LastName" class="col-md-2 col-sm-2 control-label">Nom</label>
  7.                     <div class="col-md-10 col-sm-10" ng-class="{ 'has-error' : createUser.lastName.$invalid && !createUser.lastName.$pristine }" >
  8.                          <div class="input-group">
  9.                             <input type="text" class="form-control" id="LastName" name="lastName" placeholder="Nom" ng-model="user.LastName" required >
  10.                             <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
  11.                         </div>
  12.                         <p ng-show="createUser.lastName.$invalid && !createUser.lastName.$pristine" class="help-block">Votre nom est obligatoire.</p>
  13.                     </div>
  14.                 </div>
  15.                 <div class="form-group">
  16.                     <label for="FirstName" class="col-md-2 col-sm-2 control-label">Prénom</label>
  17.                     <div class="col-md-10 col-sm-10" ng-class="{ 'has-error' : createUser.firstName.$invalid && !createUser.firstName.$pristine }">     
  18.                         <div class="input-group">
  19.                             <input type="text" class="form-control" id="FirstName" name="firstName" placeholder="Prénom" ng-model="user.FirstName" required >
  20.                             <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
  21.                         </div>
  22.                         <p ng-show="createUser.firstName.$invalid && !createUser.firstName.$pristine" class="help-block">Votre prénom est obligatoire.</p>
  23.                     </div>
  24.                 </div>
  25.                 <div class="form-group">
  26.                     <label for="Email" class="col-md-2 col-sm-2 control-label">E-mail</label>
  27.                     <div class="col-md-10 col-sm-10" ng-class="{ 'has-error' : createUser.email.$error.unique && createUser.email.$error.valid && !createUser.email.$pristine }">
  28.                         <div class="input-group">
  29.                             <input type="email" class="form-control" id="Email" name="email" placeholder="E-mail" ng-model="user.Email" ensure-unique="user.Email" required >
  30.                             <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
  31.                         </div>
  32.                         <span ng-show="createUser.email.$error.valid && !createUser.email.$pristine" class="help-block">Entrer un e-mail valide.</span>
  33.                         <span class="help-block" ng-show="createUser.email.$error.unique && !createUser.email.$pristine">
  34.                            Cette email est déjà utilisé pour un compte
  35.                         </span>
  36.                     </div>
  37.                 </div>
  38.                 <div class="form-group">
  39.                     <label for="Email" class="col-md-2 col-sm-2 control-label">Portable</label>
  40.                     <div class="col-md-10 col-sm-10" ng-class="{ 'has-error' : createUser.phone.$invalid && !createUser.phone.$pristine }">
  41.                         <input type="text" class="form-control" id="Phone" name="phone" placeholder="Portable" ng-model="user.Phone"  ng-pattern="/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/" >
  42.                         <p ng-show="createUser.phone.$invalid && !createUser.phone.$pristine" class="help-block">Entrer un numéo de téléphone portable valide.</p>
  43.                     </div>
  44.                 </div>
  45.                 <div class="form-group">
  46.                     <label for="Type" class="col-md-2 col-sm-2 control-label">Type</label>
  47.                     <div class="col-md-10 col-sm-10" >
  48.                         <select class="form-control" id="Type" ng-model="user.Type">
  49.                           <option value="Student">&Eacute;tudiant</option>
  50.                           <option value="Professionnal">Professionnel</option>
  51.                           <option value="Other">Autre</option>
  52.                         </select>
  53.                     </div>
  54.                 </div>
  55.                
  56.            
  57.             <div class="form-group">
  58.                     <div class="col-md-4 col-md-offset-5 col-sm-10">
  59.                         <button id="inscriButton" data-style="zoom-in" data-color="blue" type="button" class="ladda-button btn btn-primary" ng-disabled="createUser.$invalid" ng-click="createTask(user)">S'inscrire</button>
  60.                         <p class="connect" >Déjà Inscrit ? <a href="../view/Connexion.html">Connectez-vous</a></p>
  61.                     </div>
  62.             </div>
  63.         </form>
 

et voici maintenant la directive

 
Code :
  1. app.directive('ensureUnique', ['$http', function($http) {
  2.   return {
  3.     scope:  true,
  4.     require: 'ngModel',
  5.     link: function(scope, ele, attrs, ctrl) {
  6.      ctrl.$parsers.unshift(function(viewValue) {
  7.          var email = {
  8.             Mail : viewValue
  9.           }
  10.          var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
  11.          if(pattern.test(viewValue)){
  12.                scope.createUser.email.$setValidity('valid', true);
  13.               $http.post("http://localhost:34423/api/Users/CheckMail",email).success(function(data,status,headers){
  14.                   scope.createUser.email.$setValidity('unique', true);;
  15.                 });
  16.          } else {
  17.             scope.createUser.email.$setValidity('valid', false);
  18.          }
  19.        
  20.      });
  21.     }
  22.   }
  23. }]);
 

Merci d'avance


Message édité par OrcusZ le 13-06-2015 à 12:59:37

---------------
Made you your own sentence without believing that of the others...
mood
Publicité
Posté le 13-06-2015 à 11:29:57  profilanswer
 

n°2260262
OrcusZ
Pro AMD | .Net lover
Posté le 13-06-2015 à 13:19:25  profilanswer
 

Bonjour,
 
 
Après de l’acharnement cette ligne de code
 
scope.createUser.email.$setValidity('email',true);
 
 
à résolu mon problème
 


---------------
Made you your own sentence without believing that of the others...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [Angularjs] Problème avec directive

 

Sujets relatifs
[PERL] Problème regexp \1Problème d'affichage de caractère
[Hibernate JPA] Problème relation entre 2 objetsProblème avec $this avec la POO
[SQL/PLSQL] problème sur requêteProblème fichier LUA
[C] probleme pour un reseau de petriProblème de Rebond sur un filet
[Arduino] Problème réception GPSProbleme exercice de Langage machine
Plus de sujets relatifs à : [Angularjs] Problème avec directive


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR