Ember-Validations - 不要自动验证

时间:2014-03-20 16:10:35

标签: validation ember.js ember-data

我正在使用ember-validations来验证表单中的模型。

如果我使用createRecord创建记录,则模型的实例已经过验证,因此表单在用户输入值之前已经显示了验证错误。

我只想在提交表单之前验证模型。有办法吗?

2 个答案:

答案 0 :(得分:3)

您需要添加条件验证器('if'或'unless')并仅在提交表单时激活它。

以下是一个简单示例:http://jsbin.com/letujimu/1/edit?html,js,output

答案 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');
        }
      },
    }
  }
);