我正在尝试使用Angular的FormControl验证 JSON 输入。
执行此操作的常规方法(例如电子邮件)将是:
<form name="form">
<textarea ng-model="data.email" type="email" name="email"></textarea>
</form>
有几个内置&#34;代币&#34; Angular's FormControl中的(电子邮件,电话号码,日期......)
是否可以构建自己的 JSON &#34;令牌&#34;? < ... type="json">
如果没有,是否有更简单的方法进行此验证?我不一定需要AngularJS。
答案 0 :(得分:0)
你可以为json构建它。但它不会是type="json"
。它将是type="text" validate-json
,然后您可以添加自定义指令。
app.directive('validateJson', function(){
return {
restrict: 'A',
require: 'ngModel',
link: function(s,e,a,c) {
c.$parsers.puch(function(value){
if(value is json) {
c.$setValidity('json', true);
} else {
c.$setValidity('json', false);
}
});
}
}
})
当然javascript中没有像value is json
那样的东西。我实际上并不知道如何将字符串验证为有效的JSON。但这是一个概念。
现在您可以使用ngMessages
报告错误
<form name="form">
<textarea ng-model="data.email" type="text" name="json_field" validate-json></textarea>
<div ng-messages="form.json_field.$error">
<div ng-message="json">Field is not valid JSON.</div>
</div>
</form>