Как динамически назначать правила valdr?

Прости мои минимальные знания AngularJS и valdr...

У меня есть приложение, использующее AngularJS, где пользовательский интерфейс динамически генерируется, чтобы редактировать некоторый объект с предоставленными метаданными, чтобы определить тип для интерпретации членов объекта. Я собираюсь добавить дополнительные метаданные, чтобы установить правила проверки для каждого участника.

Я нашел valdr и подумал, можно ли добавить правила, используя valdrProvider.addConstraints() вызывается повторно для каждого редактируемого поля. Предположительно имена правил должны быть сделаны уникальными?

Как я могу удалить правила из набора правил при выгрузке данных?

Является ли этот подход допустимым или я должен просто отобразить метаданные правила напрямую, используя директиву AngularJS или что-то в этом роде?

1 ответ

Решение

Ваш подход звучит нормально. Валдр предлагает removeConstraint(constraintName) функция, которая может делать то, что вам нужно. Обратите внимание, однако, что это устраняет все ограничения для данного типа модели.

Возьмите пример по адресу https://github.com/netceteragroup/valdr.

yourApp.config(function(valdrProvider) {
  valdrProvider.addConstraints({
    'Person': {
      'lastName': {
        'size': {
          'min': 2,
          'max': 10,
          'message': 'Last name must be between 2 and 10 characters.'
        },
        'required': {
          'message': 'Last name is required.'
        }
      },
      'firstName': {
        'size': {
          'min': 2,
          'max': 20,
          'message': 'First name must be between 2 and 20 characters.'
        }
      }
    }
});

призвание removeConstraint('Person') удалил бы все ограничения для Person, Если вы просто хотите удалить firstName потому что вы удалите поле ввода имени, которое вы можете вызвать addConstraints снова с обновленным определением ограничений для Person,

Финальные заметки:

  • valdr не навязывает вам удаление ограничений при удалении полей (см. обсуждение на https://github.com/netceteragroup/valdr/issues/46).
  • да, имена ограничений уникальны, потому что они связаны с типами моделей, которые должны иметь уникальные имена, не должно быть двух Person типы с разной реализацией
Другие вопросы по тегам