Javascript AngularJS验证指令消息参数
假设我们需要一个自定义的角度验证器,为错误消息提供参数。 例如,如果我们要创建一个验证器来计算数组的最小长度,当它无效时,消息应该是“最小长度为{0}” 现在,考虑到我们已经为此验证创建了一个自定义指令(如下所示),我们如何将验证指令函数中的“{0}”参数提供给验证消息 这里有一个用于以下内容的自定义验证指令:Javascript AngularJS验证指令消息参数,javascript,angularjs,validation,Javascript,Angularjs,Validation,假设我们需要一个自定义的角度验证器,为错误消息提供参数。 例如,如果我们要创建一个验证器来计算数组的最小长度,当它无效时,消息应该是“最小长度为{0}” 现在,考虑到我们已经为此验证创建了一个自定义指令(如下所示),我们如何将验证指令函数中的“{0}”参数提供给验证消息 这里有一个用于以下内容的自定义验证指令: .directive('arrayLength', function () { return { require: 'ngModel', link
.directive('arrayLength', function () {
return {
require: 'ngModel',
link: function (scope, elm, attrs, ctrl) {
ctrl.$validators.arrayLength = function (modelValue, viewValue) {
return modelValue >= parseInt(attrs.arrayLength);
};
}
};
});
在这里,我们要宣布的信息是:
.run([
'defaultErrorMessageResolver',
function (defaultErrorMessageResolver) {
defaultErrorMessageResolver.getErrorMessages().then(function (errorMessages) {
errorMessages['arrayLength'] = 'Minimum length is {0}';
});
}
]);
所以。。。有什么想法吗
我肯定这不是一门火箭科学。只是我是个新手
提前谢谢。看看这个。可以通过自己的策略传递消息(“messageerror”)
var-app=angular.module(“myApp”,[]);
函数Fiddle($scope){}
app.directive('input',function(){
返回{
限制:'E',
范围:{
minlength:“@minlength”
},
链接:函数(作用域、elm、attr、ctrl){
elm.bind('keyup',function(){
var valid=(this.value&&this.value.length>=scope.minlength);
如果(!有效){
if(elm.parent().find(“span”).length==0)
elm.parent().append(“Min是”+scope.minlength+”);
}否则
elm.parent().find(“span”).remove();
});
}
};
});代码>
-
最小3个字符:
plunker或jsfiddle是否使用运行代码?是。这里有一把小提琴:只要按一下就可以了!!并注意显示的消息。{0}参数为空。不确定我是否理解了您的代码,但在我看来,它并没有传递参数,而是传递了整个消息。如果是这样的话,那就不是我要寻找的。我在指令中使用params时,在代码中传递mensageerror以进行演示。现在看!在示例中,param用于验证和显示消息我非常感谢您的回答,但仍然。。。不是我想要的。您的解决方案可以工作,但不提供原始消息。相反,它附加了HTML。我提供了一个提琴()以便更好地了解我在寻找什么。谢谢!嘿,伙计,我在JSFIDLE中看到了你的建议,但是你的想法是使用工厂来创建一个“验证器数据”。是的,这是可能的,但这很奇怪,并不常见。工厂用于创建与控制器共用和共享的服务。一个例子是Access rest服务的服务层。验证视图中的元素是常用的指令,对吗?然后可以使用一个指令验证多个字段。所以您使用字段中的属性来验证e显示消息错误。