Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:动态应用到输入字段时出错_Javascript_Json_Angularjs_Validation - Fatal编程技术网

Javascript AngularJS:动态应用到输入字段时出错

Javascript AngularJS:动态应用到输入字段时出错,javascript,json,angularjs,validation,Javascript,Json,Angularjs,Validation,我有从JSON动态生成的html,我想实现一些验证逻辑 为了澄清,以下是一个示例: <div ng-switch on="field.type" ng-hide="{{ field.hide }}"> <div ng-switch-when="input" class= "col-md-6" ng-class="{'has-error': reqField(field.name, entity[field.name]) }"> <input

我有从JSON动态生成的html,我想实现一些验证逻辑

为了澄清,以下是一个示例:

<div  ng-switch on="field.type" ng-hide="{{ field.hide }}">
<div ng-switch-when="input" class= "col-md-6" ng-class="{'has-error': reqField(field.name, entity[field.name]) }">
    <input
        ng-model="entity[field.name]" id="{{field.name}}" class="form-control" 
        type="text" ng-style="setStyle(field.style)" ng-change="{{field.change}}" />
</div>
</div>
因此为了澄清,ng开关中的例如:“field.type”就是JSON中的类型——我们可以根据不同的JSON键/值确定要显示内容的html div

这意味着一个html div可能用于生成数百个输入字段,因此这需要是动态的

我想在必填字段为空时添加验证。目前,我已经尝试添加指向我的函数reqField的ng类={has error':}。但是,由于该函数会针对每个类型为:jsonselect的字段启动,因此该函数会检查该字段是否为空,这在速度和可用性方面都非常低效

您在上面看到的javascript或多或少是reqField函数用来检查字段是否为空的逻辑,效率非常低,因为我们要检查数百个字段

我想使用的是类似于ng required={{field.required}}的内容,并在JSON中创建一个新的键/值,以确定我是否希望此字段是如下所示的必填字段排序:

 {
"title": "Json Title",
"id": "j_id",
"groupfields": [
    {
        "name": "jsonname",
        "title": "JSON Title",
        "type": "jsonselect",
        "namevalue": "jsonvalue",
        "combo": "jsondropdown",
        "change" : "jsonChanged()"
    },
    {
        "name": "jsonEmail",
        "title": "JSON Email Address",
        "type": "display",
        "required": true
    },
    {
        "name": "jsonPhone",
        "title": "JSON Phone Number",
        "type": "display",
        "required": true
    }
]
},

~然后以某种方式将该信息传递给ng类={has error':},以便我们可以高亮显示-或者在知道字段已填充/或为空时执行任何我们想要的操作。

表单验证内置于AngularJS中。ng required指令将向表单对象添加错误状态,以便您可以像这样设置ng类:

if (entityName) {
    return false;
} else {
    return true;
}
 {
"title": "Json Title",
"id": "j_id",
"groupfields": [
    {
        "name": "jsonname",
        "title": "JSON Title",
        "type": "jsonselect",
        "namevalue": "jsonvalue",
        "combo": "jsondropdown",
        "change" : "jsonChanged()"
    },
    {
        "name": "jsonEmail",
        "title": "JSON Email Address",
        "type": "display",
        "required": true
    },
    {
        "name": "jsonPhone",
        "title": "JSON Phone Number",
        "type": "display",
        "required": true
    }
]
},
<div ng-switch-when="input" class= "col-md-6" ng-class="{'has-error': myForm[field.name].$error.required }">
<form name="myForm">
...
  <input name="{{field.name}}" ng-required="field.required">