2013-07-01 4 views
5

In JS 1.1.5 angolare è possibile annullare le chiamate $ http precedentemente avviate. Questi due link1 e link2 forniscono alcune spiegazioni su come funziona.

Tuttavia non riesco a capire come utilizzarlo nella pratica. Ho creato plnkr per illustrare ciò che voglio ottenere.

  1. utente ha un link che può cliccare su (come sappiamo, gli utenti tendono a farlo molto appassionatamente)
  2. Se l'utente clic sui link, e la richiesta precedente non ha ancora finito, dovrebbe essere annullata, e dovrebbe essere fatta una nuova richiesta (in questo esempio ci sono altri modi per ignorare più click.Il problema originale è il campo di input dell'utente con ng-change su di esso - la richiesta viene fatta ogni volta che l'utente cambia valore - ogni keypress spara $ http. utilizzando il link per renderlo un po 'più semplice)

Come si può vedere in plnkr richiesta incendi e viene annullato immediatamente, ma sono expecti ultima richiesta per avere successo.

Sono nuovo di angularjs quindi probabilmente sto sbagliando. Ho provato tutto quello che posso immaginare, ma non ci sono esempi completi per canceler.resolve()

Qualcuno può aiutarmi con questo o guidarmi verso la giusta direzione?

risposta

10

È necessario creare un nuovo annullatore per ogni richiesta, poiché una volta risolto non può essere riutilizzato.

See here for an updated plnkr.

+0

Bingo! Stavo riutilizzando il mio. Ecco perché non funzionava. –