单个复杂类型数据属性的多个验证器

时间:2015-01-05 00:58:55

标签: angularjs validation breeze complextype

我遇到过两种数据属性使用相同复杂类型的情况。以下是使用的实体。

    {
        "name": "dataProperty1",
        "complexTypeName": "ComplexType:#test"
    },
    {
        "name": "dataProperty2",
        "complexTypeName": "ComplexType:#test"
    }

的ComplexType:

{
    "shortName": "ComplexType",
    "namespace": "test",
    "isComplexType": true,
    "dataProperties": [
            {
            "name": "fieldA",
            "dataType": "String",
            "maxLength": 50
        }
]
}

现在我的问题是,两个数据属性(dataProperty1和dataProperty2)都对复杂类型数据属性(fieldA)进行了特定验证。

我尝试为复杂数据属性(fieldA)添加两个不同的验证器,但两个验证器都在为两个数据属性执行。

            {
                "name": "fieldA",
                "dataType": "String",
                "maxLength": 50,
                "validators"[
                      {
                         //name :validationA
                      },
                      {
                         //name :validationB
                      }
                 ]
            }

假设'dataProperty1'只需要执行'validationA',而'dataProperty2'只需执行'validationB'。

这种情况需要特别处理吗?

请帮助解决此问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在您的验证功能中,'上下文'参数将具有' propertyName'属性。这个' propertyName'将是您的财产的路径,因此您可以区分说" billingAddress'和' locationAddress'。此外,如果您验证complexType的子属性' context.propertyName'将是您的财产的虚线路径,即类似于' billingAddress.city' vs' locationAddress.city'。

所以你可以写一个这样的验证器

  var valFn = function (v, context) {
    var propName = context.propertyName;
    // change the validation logic here depending on the 'propName';
  };
  var myValidator = new Validator("MyValidator", valFn,
      { messageTemplate: "Custom message template..." });