Question

Je vais avoir une page de formulaire qui est utilisé pour ajouter et modifier la forme .Ainsi, au moment de l'ajout de données dans la forme , j'ai besoin de vérifier les données d'entrée est dupliqué ou pas, j'ai donc créé une directive qui va vérifier avec la base de données une base de données météorologiques existe ou pas.

<input name="divId" type="text" class="form-control fL w250"   ng-model="divisionData.DivisionID"  ng-disabled="Disabled()" unique-divid required /></div>

au moment de l'ajout de nouvelles données à sa fonctionne très bien .mais, au moment de modifier également à l'aide de la même forme donc l'unique-divid directive est en cours d'exécution.Je ne veux pas que cela arrive à modifier la page

.directive('uniqueDivid', function($http) {
  var toId;
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, elem, attr, ctrl) { 
     scope.$watch(attr.ngModel, function(value) {
        if(toId) clearTimeout(toId);
        toId = setTimeout(function(){
          console.log(value);
            $http({
            method  : 'POST',
            url     : 'http://testurl',
            data    : $.param({'DivisionID' : value}), 
            headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  
        })
            .success(function(data) {
                console.log(data);
                if(data.status == 'success'){
                    ctrl.$setValidity('uniqueDivid', true);
                }else if(data.status == 'fail'){
                    ctrl.$setValidity('uniqueDivid', false);
                }
                if (!data.success) {
                } else {
                }
            });


        }, 200);
      })
    }
  }
});

S'il vous plaît suggérer une solution soit désactiver la directive ou d'arrêter la portée.$fonction de veille au moment de la modifier .

Était-ce utile?

La solution

Pouvez-vous ajouter un attribut supplémentaire pour le champ de saisie en indiquant le type de forme d'action (créer/modifier) c'est de servir?

Par exemple:

<input name="divId" type="text" class="form-control fL w250" ng-model="divisionData.DivisionID" ng-disabled="Disabled()" unique-divid form-action="edit" required />

Si ce type d'action correspond à celui que vous voulez ignorer, juste retour de fonction de liaison.

link: function(scope, elem, attr, ctrl) { 
  if (attr.formAction === "edit") return;
  ..
}

Dans le cas où vous ne souhaitez pas modifier le modèle, ce qui est l'indication dans le contrôleur ou la portée que pourrait être utilisée pour distinguer entre les nouveaux et existants divisionData?Vous pouvez utiliser cette propriété comme un indicateur de retour à partir de la unique-divid directive:

link: function(scope, elem, attr, ctrl) { 
  if (!scope.divisionData.isNew) return;
  ..
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top