2017-06-14 13 views
2

具有輸入AngularJS輸入有效的,如果值是數組

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

我希望它是有效的,如果輸入值是包含在數組中的任意數量(該示例中的陣列possibleInputValues)。

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

因此,例如,如果用戶鍵入「2」到輸入,它應該是有效的(如在陣列possibleInputValues包含2個),但應爲無效例如用於值5

我在AngularJS Documentation中找到的一種方法是爲這種驗證編寫一個自己的指令。這是唯一的方法嗎?還是有更輕量的方法來做到這一點?

我所尋找的是這樣的事情

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

和控制器

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

看看[角UI的項目(https://angular-ui.github.io/),包括['UI-validate'指令(https://htmlpreview.github.io/? https://github.com/angular-ui/ui-validate/master/demo/index.html)。它可以幫助你很多自定義驗證。 –

+0

angular-ui/ui-validate看起來像它正是我正在尋找的。非常感謝! – LocalHorst

+0

很高興幫助!我會給它一個答案,因爲它幫助你。 –

回答

相關問題