2017-06-14 1 views
2

ayant une entréeAngularJS entrée valide si la valeur est dans le tableau

<div ng-app="myApp" ng-controller="myCtrl"> 
    <form> 
     <input type="number" ng-model="$ctrl.myNumber" /> 
    </form> 
</div> 

Je veux qu'il soit valide, si la valeur d'entrée est un nombre contenu dans un tableau (dans cet exemple le tableau possibleInputValues).

var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) { 
    var self = this; 
    self.possibleInputValues = [1, 2, 3, 4, 7, 8, 9, 10]; 
}); 

Ainsi, par exemple, si l'utilisateur tape « 2 » dans l'entrée, il devrait être valide (comme le tableau possibleInputValues contient 2), mais devrait être invalide par exemple, pour la valeur 5.

Une façon que j'ai trouvé dans le AngularJS Documentation est d'écrire une propre directive pour ce genre de validation. Est-ce le seul moyen ou existe-t-il un moyen plus léger de le faire?

Ce que je cherche est quelque chose comme ça

<input type="number" ng-model="$ctrl.myNumber" valid-if="$ctrl.isInMyArray()"/> 

et le contrôleur

app.controller('myCtrl', function($scope) { 
    var self = this; 
    self.possibleInputValues = [1, 2, 3, 4, 7, 8, 9, 10]; 
    self.isInMyArray = function(val) { 
     if (self.possibleInputValues.indexOf(val) !== -1) { 
      return true 
     } 
     return false; 
    } 
}); 
+1

Jetez un oeil à [Projet de l'interface utilisateur d'Angular] (https://angular-ui.github.io/) qui inclut une directive ['ui-validate'] (https://htmlpreview.github.io/? https://github.com/angular-ui/ui-validate/master/demo/index.html). Cela peut vous aider beaucoup avec la validation personnalisée. –

+0

angular-ui/ui-validate ressemble à ce que je cherchais exactement. Merci beaucoup! – LocalHorst

+0

Content de vous aider! Je vais faire une réponse comme cela vous a aidé. –

Répondre