AngularJS 如果值在数组中则输入有效
AngularJS Input valid if value is in array
有输入
<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;
}
});
勾选Angular-UI's project which includes ui-validate/ui-validate-async
directives。
此指令使创建自定义验证器表达式变得非常容易。在您的情况下,它看起来像 ui-validate="{inArray: 'isInMyArray($value)' }"
.
有输入
<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;
}
});
勾选Angular-UI's project which includes ui-validate/ui-validate-async
directives。
此指令使创建自定义验证器表达式变得非常容易。在您的情况下,它看起来像 ui-validate="{inArray: 'isInMyArray($value)' }"
.