2016-03-07 5 views
1

У меня есть форма с 2 полями, почтовым индексом и страной. мне нужно, чтобы проверить почтовый индекс в зависимости от выбора страны, используя $ валидаторовКак проверить поле на основе значения другого поля в форме угловой схемы?

Вот код ngController

$scope.schema = { 
"type": "object", 
"title": "my form", 
"properties": { 
    "postalCode": { 
    "title": "Postal Code", 
    "type": "string" 
    }, 
    "countryCode": { 
    "title": "Country", 
    "type": "string", 
    "enum": [ 
     "CA", 
     "US" 
    ] 
    } 
}, 
"required": [ 
    "countryCode" 
] 
}; 


    $scope.form = [{ 
    "key": "postalCode", 
    $validators: { 
     // I would like to pass countryCode as the argument but doesn't work because I don't have model in my closure 
     postalCodeRegex: function (countryCodeValue) { 
      if (angular.isString(countryCodeValue)) {     
       var canada = "^(?!.*[DFIOQU])[A-VXY][0-9][A-Z]●?[0-9][A-Z][0-9]$"; 
       if (/canada/.test(countryCodeValue)) return true; 
       else return false; 
      } 
      // if value is empty 
      return true; 
     } 
    } 
}, 
"countryCode", { 
    "type": "submit", 
    "style": "btn-info", 
    "title": "OK" 
} 
]; 

есть другой способ, чтобы получить доступ к модели или области от $ валидаторов логики?

plunker ссылку, чтобы увидеть мой код: http://plnkr.co/edit/DDbMiw?p=info

ответ

0

@houss Вы можете использовать OnChange, чтобы объединить значения в новое значение «US-90210», сохраненный в скрытом поле на ключ добавляется как часть формы, затем подтвердите это скрытое поле с регулярным выражением, охватывающим оба формата. В качестве альтернативы, если вам может потребоваться больше нескольких стран, я бы использовал директиву, которую можно добавить с помощью дополнительных механизмов. Like the datepicker example but in the template add a component to do the heavy lifting

Смежные вопросы