Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 验证复杂类型而不验证整个实体_Javascript_Breeze - Fatal编程技术网

Javascript 验证复杂类型而不验证整个实体

Javascript 验证复杂类型而不验证整个实体,javascript,breeze,Javascript,Breeze,当您要验证breeze实体时,请编写: this.entityAspect.validateEntity() 但是,如果我只想对复杂类型启动验证,而不启动整个实体验证,该怎么办 complexType.ComplexSpect没有方法validateEntity 那么,我该怎么办 看到Jay回答后编辑: 我尝试使用方法validateProperty。 但结果是它总是返回true,因为它没有检查每个属性。 所以,我多次尝试调用validateProperty方法,每次都是针对com

当您要验证breeze实体时,请编写:

     this.entityAspect.validateEntity()
但是,如果我只想对复杂类型启动验证,而不启动整个实体验证,该怎么办

complexType.ComplexSpect没有方法validateEntity

那么,我该怎么办


看到Jay回答后编辑:

我尝试使用方法validateProperty。 但结果是它总是返回true,因为它没有检查每个属性。 所以,我多次尝试调用validateProperty方法,每次都是针对complexType的其他字段。它给出了有效/无效的布尔结果,但没有更新验证错误

下面是我在看到Jay回答后尝试的代码,但没有帮助:

  validateSingleField(myComplexProertyName);
validateSingleField函数的第一个版本:(结果是它总是返回true,因为它没有检查每个属性)

第二个版本:(它给我有效/无效的boolian结果,但不更新验证错误。)


没有单独的方法来验证复杂类型,因为验证结果都是“父”实体的一部分。复杂类型属性被视为实体的一部分,而不是独立实体


您可以对父实体的“complex”属性调用validateProperty

我尝试了它,它返回“true”,即使complexType无效。它没有检查每个属性。我还尝试对complexType的每个属性使用“validateProperty”,但是-它没有给我validationErrors,它只告诉我该属性无效。我根据您的答案编辑了我的问题。你能再读一遍并试着回答我吗?我找到了路。非常感谢。
 function validateSingleField(object, fieldName) {     
    var entityAspect = object.entityAspect;
    var objectType = object.entityType;
    var prop = objectType.getProperty(fieldName);
            
    var value = object.getProperty(fieldName);
    if (prop.validators.length > 0) {
        var context = { entity: entityAspect.entity, property: prop, propertyName: fieldName };
        if (entityAspect._validateProperty(value, context)) {
            return true;
        }
        return false;
    }
}
 function validateSingleField(object, fieldName) {
    var aspect = object.entityAspect || object.complexAspect;
    var entityAspect = object.entityAspect || object.complexAspect.getEntityAspect();
    var objectType = object.entityType || object.complexType;
    var prop = objectType.getProperty(fieldName);
    if (prop.isComplexProperty) {
        var isOk;
        objectType.getProperties().forEach(function (p) {               
            isOk = isOk && validateSingleField(object[fieldName](), p.name)//writing 'object[fieldName]()' - is for send the entire complexType of the entity 
        });
        return isOk;              
    }
    else {
        {
            var value = object.getProperty(fieldName);
            if (prop.validators.length > 0) {
                var context = { entity: entityAspect.entity, property: prop, propertyName: fieldName };
                if (entityAspect._validateProperty(value, context)) {
                    return true;
                }
                return false;
            }
        }
    }
}