2017-11-25 160 views
0

我在模型和表单上使用了ember-cp-validation。我希望验证只有在满足某些条件时才有效。就像当一条路径处于活动状态时,或者某个组件在特定环境中使用时一样。ember-cp验证条件验证程序

为了说明,我有一个基本的email模型,对模型本身进行了典型的验证。如果在用户帐户的上下文中使用该模型,我希望启用额外的验证程序(验证程序username-exists,用于判断他们是否尝试将其电子邮件地址更新为存在于另一帐户中的电子邮件地址)。

我的电子邮件地址模式:

import DS from 'ember-data'; 
import { validator, buildValidations } from 'ember-cp-validations'; 

const { attr } = DS; 

const Validations = buildValidations({ 
    email: { 
     validators: [ 
      validator('presence', { presence: true, description: 'E-Mail'}), 
      validator('format', { 
       type: 'email' 
      }), 
      validator('length', { 
       max: 200, 
      }) 
     ] 
    }, 
}); 

export default DS.Model.extend(Validations, { 
    email: attr('string'), 
    optin: attr('boolean', { defaultValue: false }) 
}); 

我已经有一个用户名,存在自定义的验证。我只是不知道如何添加验证有条件地

最简单的解决方案是将验证与disabled选项相加,除非满足条件,否则将禁用该选项。

validator('username-available', { 
    debounce: 300, 
    disabled: computed.bool(what is the dependent key??) 
}) 

但我不知道依赖关键是什么。我不认为模型定义中的路线名称可用。

或者我应该添加条件验证器到组件本身?有没有办法将一个验证器追加到组件js的validators数组?

我想我可能失去了一些东西明显;)

+0

嗯,只验证你的模型只在需要时,登录我猜。 – Cezary

回答

1

我花了一段时间来挖那个涨得时候我一直在寻找它。这里是我有什么(安装略有不同,但应该让你去):

email: { 
    disabled: Ember.computed.not('model.attributeInQuestion'), 
    validators: [ 
    ], 
    }