ember-cp-validations условный валидатор
Я использую ember-cp-проверки на моделях и формах. Я хочу, чтобы проверка была активной только при соблюдении определенных условий. Например, когда маршрут активен или когда компонент используется в определенном контексте.
Чтобы проиллюстрировать, у меня есть основные email
модель, которая имеет типичные проверки на самой модели. Когда эта модель используется в контексте учетной записи пользователя, я хочу, чтобы дополнительный валидатор был активным (username-exists
валидатор, используемый, чтобы сказать, пытаются ли они обновить свой адрес электронной почты на тот, который существует в другой учетной записи).
Моя модель электронной почты:
import DS from 'ember-data';
import { validator, buildValidations } from 'ember-cp-validations';
const { attr } = DS;
const Validations = buildValidations({
email: {
validators: [
validator('presence', { presence: true, description: 'E-Mail'}),
validator('format', {
type: 'email'
}),
validator('length', {
max: 200,
})
]
},
});
export default DS.Model.extend(Validations, {
email: attr('string'),
optin: attr('boolean', { defaultValue: false })
});
У меня уже есть пользовательский валидатор с существующим именем пользователя. Я просто не могу понять, как добавить эту проверку условно.
Простейшим решением было бы добавить проверенный с disabled
опция, которая держит его отключенным, если не выполнено условие.
validator('username-available', {
debounce: 300,
disabled: computed.bool(what is the dependent key??)
})
Но я понятия не имею, каким будет зависимый ключ. Я не думаю, что название маршрута доступно в определении модели.
Или я должен добавить условный валидатор к самому компоненту? Есть ли способ добавить валидатор в validators
массив из компонента JS?
Я думаю, что я, вероятно, упускаю что-то очевидное;)
1 ответ
Мне потребовалось время, чтобы выкопать это, когда я искал это. Вот что у меня есть (настройка немного по-другому, но вы должны начать):
email: {
disabled: Ember.computed.not('model.attributeInQuestion'),
validators: [
],
}