2012-04-28 3 views
5

Ho una piccola applicazione che filtra un elenco di elementi fornendo diverse scelte per diversi attributi negli elementi combobox (seleziona). Tutto funziona correttamente selezionando e deselezionando i singoli elementi della casella combinata, ma poiché ho introdotto un pulsante obbligatorio in "Ripristina impostazioni filtro" che reimposta tutti gli elementi della casella combinata su null, si ottengono prestazioni scadenti. Sembra che ogni singola istruzione che modifica una casella di combo stia attivando un aggiornamento della lista completa.Come attivare più modifiche come "unità" con knockout.js

Come posso dire a knockout di ARRESTARE gli osservabili, avere tutti gli elementi di combo ripristinati su null e poi dire knockout a RESUME aggiornamento o inizialmente TRIGGER l'aggiornamento me stesso.

Qualche idea?

Grazie Andreas

+4

Date un'occhiata al extender "a farfalla": http://knockoutjs.com/documentation/throttle-extender.html – Niko

risposta

4

spudoratamente ampliando commento di Niko, è necessario utilizzare le throttle extender.

Aggiunta .extend({ throttle: 10 }) alla mia dichiarazione computerizzata risolto questo problema per me:

// get only selected markets 
self.SelectedMarkets = ko.computed(function() { 
    return ko.utils.arrayFilter(self.Markets(), function(market) { 
     return market.IsSelected() == 1; }); 
}).extend({ throttle: 10 });