2014-05-01 11 views
5

Ho un modulo con un input di testo associato alla proprietà calcolata (contenente un'ora). Dopo che un utente inserisce un valore, viene analizzato in un valore intero contenente i minuti totali.Forzare l'aggiornamento di una proprietà calcolata con limitazione

Poiché questa non è una funzione banale (ci sono molti modi di formattare il tempo), la proprietà ha un Throttle Extender.

Funziona tutto bene, il problema è quando l'utente immette un valore e preme immediatamente un pulsante di salvataggio, ovviamente il valore regolato non viene ancora valutato.

self.totalMinutes = ko.observable(0); 
self.totalMinutesValue = ko.computed({ 
    read: function() { 
     return MinutesToFormat(self.totalMinutes()); 
    } 
    write: function(value) { 
     self.totalMinutes(FormatToMinutes(value)); 
    } 
}).extend({ throttle: 250 }); 

self.Save = function() { 
    // Send self.totalMinutes() to server, need to ensure the throttled 
    // computed has been written. 
} 

Esiste un modo semplice per forzare l'aggiornamento immediato della proprietà dal metodo di invio? Potrei aggiungere un setTimeout ma questo è ovviamente lontano dall'ideale.

+1

Non ho usato molto il throttle ma in 3.1 credo che si consiglia di usare invece il rateLimit extender, forse questo risolverà il problema - http://www.knockmeout.net/2014/03/knockout-3-1 -released.html – 4imble

risposta

4

Sembra che il tassoLimiter potrebbe in effetti risolvere questo problema.

http://knockoutjs.com/documentation/rateLimit-observable.html

"scrive osservabili non sono ritardati, il valore del osservabile è aggiornate subito Per scrivibili calcolata osservabili, ciò significa che la funzione di scrittura viene sempre eseguito subito

..

Tutte le notifiche di modifiche sono in ritardo, anche quando si chiama il valore HasMutated manualmente.Questo significa che non è possibile utilizzare valueHasMutated su forzare un osservatore con limiti di frequenza per notificare un valore non modificato.

Il metodo di limite di velocità predefinito è diverso dall'algoritmo del gas . Per abbinare il comportamento della valvola a farfalla, utilizzare il metodo notifyWhenChangesStop "

Valutazione di un tasso limitato calcolato osservabile non è il tasso limitata;.. che verrà rivalutare se si legge il suo valore

Problemi correlati