自定义表单验证:JSON

Custom form validation: JSON

我正在尝试使用 Angular 的 FormControl 验证 JSON 输入。

通常的方式(例如电子邮件)是:

<form name="form">
   <textarea ng-model="data.email" type="email" name="email"></textarea>
</form>

Angular's FormControl 中有几个内置的 "Tokens"(电子邮件、号码、日期...)。

您可以为 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>