ember-cp-validations 条件验证器
ember-cp-validations conditional validator
我在模型和表单上使用 ember-cp-validations。我希望仅在满足某些条件时才激活验证。例如,当路由处于活动状态或在特定上下文中使用组件时。
为了说明,我有一个基本的 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
数组?
我想我可能漏掉了一些明显的东西 ;)
我在找它的时候也花了一段时间才把它挖出来。这是我所拥有的(设置略有不同,但应该让你继续):
email: {
disabled: Ember.computed.not('model.attributeInQuestion'),
validators: [
],
}
我在模型和表单上使用 ember-cp-validations。我希望仅在满足某些条件时才激活验证。例如,当路由处于活动状态或在特定上下文中使用组件时。
为了说明,我有一个基本的 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
数组?
我想我可能漏掉了一些明显的东西 ;)
我在找它的时候也花了一段时间才把它挖出来。这是我所拥有的(设置略有不同,但应该让你继续):
email: {
disabled: Ember.computed.not('model.attributeInQuestion'),
validators: [
],
}