ember-cp-validations表单错误消息未显示

时间:2018-10-23 21:03:41

标签: javascript ember.js ember-cp-validations

我正在尝试使用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的一些教程后,我似乎仍然很困惑。任何帮助将不胜感激。

谢谢!

编辑:我想再尝试几个小时才能解决此问题,然后添加一些其他信息。我在控制器中创建了一个新动作,与位于以下位置的ember-cp-validations github页面中的示例极为相似:

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

但是,当我执行操作时,出现错误模型。validate不是一个函数。我不明白为什么在他们的示例中他们将能够在其模型上运行验证,但是我无法在我的模型上运行。我越努力解决这个问题,我就越困惑。

0 个答案:

没有答案