モデルとフォームでember-cp-validationを使用しています。特定の条件が満たされた場合にのみ検証を有効にしたい。ルートがアクティブな場合、またはコンポーネントが特定のコンテキストで使用される場合など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
配列にバリデータを追加する方法はありますか?
私はおそらく何かを明らかに不足していると思う;)
うーん、ちょうど私が推測するログイン時に、必要なだけ、あなたのモデルを検証します。 – Cezary