Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 ExtJS5.0框架中的模型验证错误_Javascript_Extjs_Extjs5 - Fatal编程技术网

Javascript ExtJS5.0框架中的模型验证错误

Javascript ExtJS5.0框架中的模型验证错误,javascript,extjs,extjs5,Javascript,Extjs,Extjs5,如何获得模型的验证错误,特别是在ExtJS5.0中?在版本4.2中,我们做到了这一点: var rec=Ext.createModelName,{…}; var errors=rec.validate; 如果errors.isValid{ 表1.2.1.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2; } 但是,现在在文档中标记为已弃用,调用它将不再返回任何错误消息。我已经研究了5.0中引入的getValidation方法,

如何获得模型的验证错误,特别是在ExtJS5.0中?在版本4.2中,我们做到了这一点:

var rec=Ext.createModelName,{…}; var errors=rec.validate; 如果errors.isValid{ 表1.2.1.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2; }
但是,现在在文档中标记为已弃用,调用它将不再返回任何错误消息。我已经研究了5.0中引入的getValidation方法,但它不会返回任何可以传递给表单组件的错误消息,也没有明确的示例说明如何实现这一点。

我一直以另一种方式配置表单中的验证器-这种方式会自动标记根据需要提供相关字段。尽管getValidation会返回一个私有实用程序类,这可能会使代码容易受到框架未来版本更改的影响,但是需要预先警告的是,只需进行一些修改,就可以完成您想要的操作

首先,Ext.data.Model getValidation返回Ext.data.Validation的一个实例,它本身就是一个简单的数据模型。它基本上是每个字段的键值映射,具有相应的有效性-如果一个值严格为布尔真,则该字段有效,否则,即字符串错误消息,则该字段无效。为了方便起见,您可以编写一个函数,以您需要的格式返回错误-在本例中,我已经覆盖了验证模型本身,但理想情况下,您可以通过扩展或:

Ext.define'override.data.Validation'{ 重写:“Ext.data.Validation”, getErrors:函数{ var错误=[]; Ext.iteratethis.getData,函数字段,值{ iftrue!==值this.push{id:field,msg:value}; },错误; 返回错误; } }; 然后按如下方式修改上述逻辑:

var rec=Ext.createModelName,{/***/}; 如果rec.isValid{ form.markInvalid rec.getValidation.getErrors; } 还值得注意的是,如果您以这种方式验证模型,那么无论您是否设置了值,验证器似乎总是返回true valid,这可能是因为记录对象原型上将存在一个defaultValue?因此,我在演示中加入了一个自定义验证器:

Ext.define'validator.NotEmpty'{ 扩展:“Ext.data.validator.validator”, 别名:“data.validator.notempty”, 验证:函数值{ return!Ext.isEmptyvalue | |'字段不能为空'; } };
我总是以另一种方式配置表单本身中的验证器——这种方式会根据需要自动标记相关字段。尽管getValidation会返回一个私有实用程序类,这可能会使代码容易受到框架未来版本更改的影响,但是需要预先警告的是,只需进行一些修改,就可以完成您想要的操作

首先,Ext.data.Model getValidation返回Ext.data.Validation的一个实例,它本身就是一个简单的数据模型。它基本上是每个字段的键值映射,具有相应的有效性-如果一个值严格为布尔真,则该字段有效,否则,即字符串错误消息,则该字段无效。为了方便起见,您可以编写一个函数,以您需要的格式返回错误-在本例中,我已经覆盖了验证模型本身,但理想情况下,您可以通过扩展或:

Ext.define'override.data.Validation'{ 重写:“Ext.data.Validation”, getErrors:函数{ var错误=[]; Ext.iteratethis.getData,函数字段,值{ iftrue!==值this.push{id:field,msg:value}; },错误; 返回错误; } }; 然后按如下方式修改上述逻辑:

var rec=Ext.createModelName,{/***/}; 如果rec.isValid{ form.markInvalid rec.getValidation.getErrors; } 还值得注意的是,如果您以这种方式验证模型,那么无论您是否设置了值,验证器似乎总是返回true valid,这可能是因为记录对象原型上将存在一个defaultValue?因此,我在演示中加入了一个自定义验证器:

Ext.define'validator.NotEmpty'{ 扩展:“Ext.data.validator.validator”, 别名:“data.validator.notempty”, 验证:函数值{ return!Ext.isEmptyvalue | |'字段不能为空'; } };