我正在使用ember-validations来验证表单中的模型。
如果我使用createRecord创建记录,则模型的实例已经过验证,因此表单在用户输入值之前已经显示了验证错误。
我只想在提交表单之前验证模型。有办法吗?
答案 0 :(得分:3)
您需要添加条件验证器('if'或'unless')并仅在提交表单时激活它。
答案 1 :(得分:0)
还有另一种替代ember-validations。 ember-model-validator,使用此插件,您可以决定何时进行验证。通过将 Ember-model-validator的 mixin包含到模型中,这将为模型添加validate
函数,它是一个返回true或false的同步函数。
支持所有这些验证:
示例:
// Your model
import Validator from '../mixins/model-validator';
export default DS.Model.extend(Validator, {
email: DS.attr('string'),
password: DS.attr('string'),
passwordConfirmation: DS.attr('string'),
validations: {
email: {
presence: true,
email: { message: 'is not a valid email' }
},
password: {
presence: true,
length: {
minimum: 6
}
},
passwordConfirmation: {
presence: true,
match: 'password'
}
}
});
import Ember from 'ember';
export default Ember.Route.extend(
{
actions: {
saveFakeModel: function() {
var _this = this,
fakeModel = this.get('model');
if(fakeModel.validate()){
fakeModel.save().then(
// Success
function() {
// Alert success
console.log('ooooh yeah we just saved the FakeModel...');
},
// Error handling
function(error) {
// Alert failure
console.log('There was a problem saving the FakeModel...');
console.log(error);
}
);
}else{
fakeModel.get('errors');
}
},
}
}
);