Ho appena letto il fantastico angular page on form validation e probabilmente mi sono perso qualcosa, ma come posso applicare la proprietà ng-model-options
debounce
a un validatore specifico.Debounce su un solo validatore
Lasciami spiegare il problema. Ho un modulo che convalida una chiave pubblica e per questo ho una direttiva chiamata key-check che contiene più validatori. Alcuni di loro sono locali e sincroni come il formato della chiave e c'è un altro asincrono che controlla se la chiave è disponibile sul server (in modo asincrono).
Non voglio il mio server per essere inondazioni né l'applicazione angolare per essere rallentato in modo che uso che i bambini freschi chiamano debouncing e il mio ingresso sembra qualcosa di simile:
<input type="text" ... ng-model="key" key-check ng-model-options="{ debounce: 700 }" ng-minlength="5" ng-maxlength="50"/>
e la direttiva è come:
ctrl.$validators.keyFormatCheck = function(modelValue) {
// return boolean
}
ctrl.$asyncValidators.KeyAvailabilityCheck = function(modelValue) {
// return promise
}
e 'un lavoro come un fascino ma tutto il controllo sono fatti con 700ms latenza e mi chiedo se è possibile fare la keyFormatCheck, senza debouncing e la KeyAvailabilityCheck con esso. Posso probabilmente usare il vecchio buon modo con timeout $ ma preferisco farlo il modo angolare.
Qualche idea?
È puoi sempre passare un parametro alla tua direttiva –
Il problema non è che non posso aggiungere proprietà alla mia direttiva. Il problema è, all'interno della direttiva, come posso impostare un antirimbalzo su un validatore? –
Quindi, si aggiunge un timeout $ di conseguenza –