2016-06-02 22 views
6

So che Vue.js ha funzionalità incorporate per rimbalzare su un campo di input. Ho creato un dispositivo di scorrimento che attiva un metodo che non utilizza un campo di input, e mi chiedevo se posso sfruttare la funzionalità di rimbalzo all'interno di un metodo.Vue rimbalzare un metodo?

È persino possibile utilizzare questa funzionalità al di fuori semplicemente aggiungendo un rimbalzo a un input? O devo scrivere le mie funzionalità per questo?

ho appena provato a fare qualcosa di simile, ma non sembra funzionare:

this.$options.filters.debounce(this.search(), 2000); 
+2

Non sembra che ci sia una funzione di rimbalzo facile da chiamare in vue.js - basta scriverne una - sono circa 5 righe di codice e dovresti riuscire a trovare numerose implementazioni su risposte SO o su google veloce. –

risposta

9

per chi sta chiedendo su come fare questo. Ho fissato questo utilizzando un piccolo frammento impressionante che ho trovato:

attributo nei miei dati

timer: 0 

funzionalità Debounce

// clears the timer on a call so there is always x seconds in between calls 
clearTimeout(this.timer); 

// if the timer resets before it hits 150ms it will not run 
this.timer = setTimeout(function(){ 
    this.search() 
}.bind(this), 150); 
+1

Uomo !! Questo è stato molto utile dopo circa 2 ore per affrontare questo colpo da $. Ti amo uomo. – juliangonzalez

+0

Non sono sicuro che sia da dove l'hai preso, ma ho letto uno snippet simile qui: https://schier.co/blog/2014/12/08/wait-for-user-to-stop-typing -using-javascript.html Potrebbe valere la pena dare credito all'autore, se questa è stata la tua fonte. – bjmc

+0

@bjmc l'ha preso da una codepen di qualcun altro, questa non è la fonte. –

4

si sono messi this.search) risultato dell'esecuzione (nel rimbalzo, prova questo:

var bufferSearch = Vue.options.filters.debounce(this.search.bind(this), 150); 
bufferSearch();