使用ember-cp-validations通常涉及验证每个属性,因为相应的表单元素会失去焦点。如果验证失败,则会显示一条错误消息。
<div class="form-group">
<label class="control-label">Name</label>
<div class="">
{{ input type="text"
value=item.name
class="form-control"
placeholder="The name of the Guest"
focus-out=(action (mut nameError) true)
}}
</div>
{{#if nameError}}
<div class="text-danger">
{{v-get item 'name' 'message'}}
</div>
{{/if}}
</div>
这是在线演示(https://embermap.com/video/ember-cp-validations)中演示的方法,但是,如果用户输入表单并立即点击提交表单的按钮,则消息将永远不会显示(因为聚焦不会触发)
演示的方法使用了validate()返回的对象,这很好,但是在那种情况下,我想对所有表单元素进行验证,以显示错误消息(放在“全部调用”验证...”如下所示。
export default Component.extend({
actions:{
buttonClicked(theguest) {
theguest.validate()
.then(({ validations }) => {
if(validations.get('isValid'))
{
this.sendAction('action', theguest);
}
else
{
//Invoke all validations in order that
//any which fail validation will show
//their error message
}
})
}
}
});
有什么精巧的方法可以做到这一点?谢谢。