我有一个字段,我想失败验证,如果该值不是一个整数。还有另一个字段可以更新这个字段的值,所以我需要编写一个指令,当值被改变为除int以外的东西时,它将监视字段值设置验证错误。
无论何时将'my-required'属性添加到HTML中,select选项都不会加载,并且该指令显然不起作用。
问题:我该如何做这项工作?
这里是小提琴:http://jsfiddle.net/zFeGN/2/
HTML:
<select ng-model="tran.type" name="tranType" ng-init="tran.type='1'" ng-options="obj.value as obj.text for obj in tradeTypeOptions" my-required="tran.type"></select>
指令:
.directive('myRequired', function() {
var regex = /^\-?\d*$/;
return {
restrict: 'A',
scope: {
'myRequired': '='
},
link: function(scope, elm, attrs, ctrl) {
scope.$watch('myRequired', function(n, o){
//alert(n);
if (regex.test(n)) {
ctrl.$setValidity('myRequired', true);
} else {
ctrl.$setValidity('myRequired', false);
}
},true);
}
};
});
的$表允许,即使它被另一个动作或指令更新了验证(即没有用户输入)。这就是我的用例中发生的事情。我想我需要定义范围来隔离
该指令也可以在多个元素上重复使用(当然也有不同的模型)。看到这里:http://jsfiddle.net/aM84a/5/ – lort
是的。那是计划。谢谢你的帮助 :) – user2762149