Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/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
Angularjs 使用json模式验证对象的一个属性_Angularjs_Validation_Attributes_Jsonschema_Client Side Validation - Fatal编程技术网

Angularjs 使用json模式验证对象的一个属性

Angularjs 使用json模式验证对象的一个属性,angularjs,validation,attributes,jsonschema,client-side-validation,Angularjs,Validation,Attributes,Jsonschema,Client Side Validation,我目前正在使用tv4(json模式验证器)来验证(客户端)具有json模式的对象,这非常有效 但是当我改变一个属性的一个值时,我希望这个值是唯一一个应该被验证的值 例如,我有一个用户: var user = { Name: 'Username', Age: 20 }; 以及模式: { "title": "UserValidation", "type": "object", "properties": { "Name": { "mi

我目前正在使用tv4(json模式验证器)来验证(客户端)具有json模式的对象,这非常有效

但是当我改变一个属性的一个值时,我希望这个值是唯一一个应该被验证的值

例如,我有一个用户:

var user = { Name: 'Username', Age: 20 };
以及模式:

{
    "title": "UserValidation",
    "type": "object",
    "properties": {
        "Name": {
            "minLength": 4
        },
        "Age": {
            "type": "int"
        }
    }
}
当我只更改名称时,我不想检查属性“Age”是否有效

原因:当我有一个大对象(带有子模型等)时,它将验证所有属性。我不知道这是否会是一个性能问题(有一天…)

  • 这是模式验证的可能情况吗
  • 还是有更好的 验证对象的方法
我在用AngularJS顺便说一句


致以最诚挚的问候和感谢。

在出现性能问题之前,您不会遇到性能问题。:)

这样的部分更新验证器不应该存在并没有技术上的原因(我知道至少有一个,但它在一开始并不是很快)。还有更快的“从头开始”验证器(),包括一些具有非常相似的API/错误报告的验证器,因此如果将来您确实开始看到性能问题,那么您可以在不太麻烦的情况下切换


但是,考虑到这种情况是在客户端发生的(这样您就不会有更多用户的缩放问题),我还不担心它。

我认为您必须选择子模式来验证子属性。这应该很容易做到,用schema.properties.Name验证user.Name


仅验证子属性的一个问题是,验证的某些部分不在属性本身上。例如,上面的对象上可能有一个必需的数组。

谢谢,帮了我很多忙!:)虽然这可能适用于某些模式,但一般来说这是不可能的。类似于
oneOf
dependencies
的子句意味着数据某个部分的更改可能会影响完全不同的区域(包括删除/添加模式)。