2016-10-31 2 views
0

Ich verwende debounce, um ein Feld "Suche bei der Eingabe" zu implementieren.Entprellte Funktionen werden verzögert, aber alle ausgeführt, wenn die Wartezeit abgelaufen ist

Ich lese https://css-tricks.com/debouncing-throttling-explained-examples/ und von dem, was ich verstehen kann die Funktion sollte nur eine begrenzte Anzahl von Zeiten aufgerufen werden.

In meinem Fall sind die Funktionsaufrufe verzögert, aber auf einmal ausgeführt, wenn die Wartezeit-Timer endet:

methods: { 
    searchOnType: function (currentPage, searchString) { 
    console.log(`Searching ${searchString}`) 
    var debounced = throttle(this.getMovies, 4000, {leading: false, trailing: true}) 
    debounced('movies.json', currentPage, searchString) 
    }, 
    getMovies: function (url, page, query) { 
    console.log(query) 
    this.loading = true 
    resourceService.getMovies(url, page, query).then((result) => { 
     this.items = result.movies 
     this.totalMovies = result.total 
     this.loading = false 
    }) 
    }, 

die HTML (es ist Vue.JS)

<input 
    type="text" 
    v-model="searchString" 
    class="form-control input-lg" 
    placeholder="search movie" 
    @keydown="searchOnType(currentPage, searchString)" 
    > 

Das ist mein console.log: console

Antwort

1

Sie erstellen eine gedrosselte Funktion jedes Mal, wenn Sie keydown (Sie sollten wahrscheinlich stattdessen input verwenden). Sie können dies tun, anstatt denke ich ...

methods: { 
    searchOnType: throttle((currentPage, searchString) => { 
    this.getMovies('movies.json', currentPage, searchString) 
    }, 1000, {leading: false, trailing: true}) 
} 
+0

Ja, Sie können, ich kann es nur in der Dokumentation lesen http://vuejs.org/guide/migration.html#debounce-Param-Attribute-for-v -Modell entfernt .. danke! aber deine syntax ist ein bisschen falsch, kannst du das doc überprüfen und korrigieren damit ich √? –

+0

Die Syntax ist zwar in Ordnung. Es kommt darauf an, wie Sie damit umgehen wollen. Ich werde mein Beispiel aktualisieren, um die Argumente zu behandeln. –

+0

Was passierte mit dem, was ich vorher gemacht habe? –

Verwandte Themen