5

TL; DR Come disabilitare temporaneamente una vista in modo da poter caricare in sicurezza un'altra vista, quindi chiudere in sicurezza la vista caricata per tornare alla visualizzazione originale?Backbone.js - Disattivazione temporanea (eventi in) Visualizza

Ho il seguente scenario: si apre

  1. utente /search che carica SearchView.
  2. L'utente fa clic su un pulsante per eseguire la ricerca.
  3. La raccolta all'interno di SearchView è piena di dati, l'interfaccia utente viene aggiornata per riflettere questo.
  4. L'utente fa clic su un elemento risultato.
  5. SearchView disabilitato (è necessario disabilitare solo events?).
  6. ItemView caricato, visualizzando i dettagli dell'elemento.
  7. L'utente fa clic su un pulsante per chiudere ItemView.
  8. SearchView viene riattivato.

Qual è il modo migliore per raggiungere i punti 5 e 8? Sto pensando di chiamare SearchView.unbind() (per il punto 5) e SearchView.bind() (per il punto 8).

Bonus: Sarebbe meglio se la soluzione fosse simile allo stack. Cioè Vista A carichi View B che può caricare View C. Quando View C è chiuso, View B viene ripristinato, ecc

+0

perché non è vero usa 'router.navigate' per spostare l'utente in' ItemView' con i dati che hanno selezionato e scarica 'SearchView'. Questo farebbe sì che tu non debba perdere nulla. – tkone

+0

Ciò darebbe anche il vantaggio che l'utente può fare clic indietro per tornare ai risultati della ricerca dai dettagli dell'articolo – tkone

+0

@tkone I uso 'router.navigate' per aggiornare l'URL ma non può distruggere' SearchView' come il risultato della ricerca è visualizzato usando lo scorrimento infinito. La posizione di scorrimento deve essere mantenuta. – wiradikusuma

risposta

9

Prova a chiamare SearchView.undelegateEvents() per il punto 5, e poi SearchView.delegateEvents() per il punto 8.