Я пытаюсь проверить ввод в форме, используя ember-cp-validations.Кажется, что действительная проверка работает, но я не могу отобразить сообщение об ошибке в шаблоне.Я довольно новичок в ember в целом, и я предполагаю, что я не правильно использую модель в помощнике v-get.
Вот моя модель:
import DS from 'ember-data';
import { validator, buildValidations } from 'ember-cp-validations';
const Validations = buildValidations({
name: validator('presence', true),
})
export default DS.Model.extend(Validations, {
name: DS.attr('string'),
});
Вотдействие, которое я выполняю в своем контроллере при отправке формы:
//tried to get character model here to make validation work
let character = this.get('model');
//create new character record to store
let newCharacter = this.store.createRecord('character', {
name: name,
});
//validating here
newCharacter.validate()
.then( ({validations}) => {
console.log(validations)
if(validations.get('isValid')) {
console.log('form is valid')
//record will be saved here
}else{
console.log('form is invalid')
}
})
В этом действии, когда поле имени пусто, оно говорит, что форма неверна, как и ожидалось.
Наконец, я пытаюсь показать здесь ошибку:
{{input type="text" class="form-control" value=name placeholder="Character Name" focus-out=(action (mut showNameError) true)}}
{{#if showNameError}}
<div class="error">
{{v-get character 'name' 'message'}}
</div>
{{/if}}
Здесь создается div, когда вы теряете фокус на поле, но сообщение никогда не отображается.Из того, что я понимаю, аргументами для помощника здесь должны быть модель, поле, которое вы проверяете, а затем сообщение, которое должно отображаться.Тот факт, что он знает, что форма недействительна, но это сообщение никогда не показывается, заставляет меня поверить, что я что-то неправильно понимаю и не могу правильно получить доступ к модели персонажа в помощнике v-get.
После прочтения ипросматривая некоторые учебники по ember-cp-validations, я все еще застрял.Буду признателен за любую помощь.
Заранее спасибо!
РЕДАКТИРОВАТЬ: Я хотел добавить дополнительную информацию после попытки еще несколько часов, чтобы решить эту проблему.Я создал новое действие в своем контроллере, очень похожее на пример со страницы github ember-cp-validations, расположенной здесь:
https://github.com/offirgolan/ember-cp-validations/blob/7433fdb2ce7d22f956ca97a9b3291fe9c6637446/tests/dummy/app/controllers/index.js
Я также убедился, что импортирую иопределение всей необходимой информации в моем файле модели.Я сделал так, чтобы они выглядели точно так же, как их пример здесь:
https://github.com/offirgolan/ember-cp-validations/blob/7433fdb2ce7d22f956ca97a9b3291fe9c6637446/tests/dummy/app/models/user.js
Однако, когда я запускаю действие, мне выдается ошибка model.validate не является функцией.Я не понимаю, почему в их примере они могли бы запустить проверку на своей модели, но я не смог бы на моей.Чем больше я пытаюсь решить эту проблему, тем больше я запутываюсь.