私は恐ろしいangular page on form validationを読んだだけで何かを見逃してしまったでしょうが、ng-model-options
debounce
プロパティを特定のバリデーターにどのように適用できますか?ただ1つのバリデータでデバウンス
問題を説明しましょう。私は公開鍵を検証するフォームを持っており、そのために複数のバリデーターを含むkey-checkというディレクティブがあります。それらのうちのいくつかはキーのフォーマットのようにローカルで同期しており、キーがサーバー上で(非同期に)利用可能かどうかをチェックする別の非同期があります。
私はクールな子供たちがデバウンス呼び出し、私の入力は何かのように思えることを使用私のサーバーは、洪水でもそう遅くするために、角度のアプリケーションになりたくない:
<input type="text" ... ng-model="key" key-check ng-model-options="{ debounce: 700 }" ng-minlength="5" ng-maxlength="50"/>
そして、ディレクティブが似ています:
ctrl.$validators.keyFormatCheck = function(modelValue) {
// return boolean
}
ctrl.$asyncValidators.KeyAvailabilityCheck = function(modelValue) {
// return promise
}
それは魔法のように仕事だが、すべてのチェックが700msの待ち時間で行われ、それはそれでデバウンスとKeyAvailabilityCheckなしkeyFormatCheckを行うことが可能ですかしら。私はおそらく$タイムアウトで古い良い方法を使用することができますが、私はそれを行うことを好む角の方法。
アイデア?
あなたあなたのディレクティブに常にパラメータを渡すことができます –
私のディレクティブにプロパティを追加できないという問題はありません。問題は、ディレクティブ内で、どのようにバリデーターにデバウンスを設定できますか? –
それに応じて$ timeoutを追加します –