Как вызвать атрибут из той же модели для проверки с помощью ember-cp-validation
Есть ли способ вызвать атрибут из той же модели? Потому что я хочу использовать атрибут из model/code.js, чтобы вычислить валидатор другого атрибута из того же файла. Я покажу вам пример.
//model/code.js
import Ember from 'ember';
import DS from 'ember-data';
import {validator, buildValidations} from 'ember-cp-validations';
const CardValidations = buildValidations(
{
cardId: {
validators: [
validator('presence', true),
validator('length', {
// here instead of 10, I want to use nbBits
max: 10
}
]
}
}
);
export default Credential.extend(CardValidations, {
cardId: DS.attr('string'),
nbBits: DS.attr('number'),
displayIdentifier: Ember.computed.alias('cardId'),
});
Итак, как вы можете видеть, я хочу вызвать nbBits, чтобы получить конкретную проверку для cardId.
Кто-нибудь знает методы или дает мне советы? Спасибо за ваше время
1 ответ
Решение
Ваш случай описан в официальной документации ember-cp-validations следующим образом:
const Validations = buildValidations({
username: validator('length', {
disabled: Ember.computed.not('model.meta.username.isEnabled'),
min: Ember.computed.readOnly('model.meta.username.minLength'),
max: Ember.computed.readOnly('model.meta.username.maxLength'),
description: Ember.computed(function() {
// CPs have access to the model and attribute
return this.get('model').generateDescription(this.get('attribute'));
}).volatile() // Disable caching and force recompute on every get call
})
});
Ваш еще более простой случай будет выглядеть так:
const CardValidations = buildValidations(
{
cardId: {
validators: [
validator('presence', true),
validator('length', {
// here instead of 10, I want to use nbBits
max: Ember.computed.readOnly('model.nbBits')
}
]
}
}
);