2015-01-22 5 views
2

Каков угловой способ добавления правил проверки в форму, которые делают не принадлежат к одному полю ввода, но вместе с несколькими значениями полей?angularjs дополнительные правила проверки формы (не проверка поля ввода)

Например:

  • Проверьте, по крайней мере, один х флажков из проверяется
  • Проверьте, если сумма множества входных чисел равно заданному числу
  • ...

Было бы неплохо, если бы ошибки отображались с помощью ng-сообщений. Я использую угловой 1.3.10.

ответ

1

Нет встроенных функций, но это требует небольших усилий.

ng-messages не зависит от чего-либо конкретного. Ему просто нужен объект, на ключи которого можно ссылаться ng-message. Простейшим решением было бы подключиться к событию submit (которое вы, вероятно, так или иначе) и выполнить дополнительную проверку.

<form ng-submit="post()" name="myForm"> 
    <input type="checkbox" name="one" ng-model="one" /> 
    <input type="checkbox" name="two" ng-model="two" /> 
    <input type="submit" /> 
    <div ng-messages="formErrors"> 
    <p ng-message="tooMany">Please, check one checkbox only</p> 
    <p ng-message="required">Please, check a checkbox</p> 
    </div> 
</form> 

На представлении функция post() называется, который добавляет какую-либо ошибку на объект formErrors:

$scope.post = function() { 
    ... 
    var hasErrors = false; 
    $scope.formErrors = { 
    }; 

    if ($scope.one && $scope.two) { 
    $scope.formErrors.tooMany = hasErrors = true; 
    } 

    if (!$scope.one && !$scope.two) { 
    $scope.formErrors.required hasErrors = true; 
    } 

    if (hasErrors) { 
    return; 
    } 
}