2013-01-05 32 views

risposta

35

RouterV2 non è facilmente accessibile tramite una costante globale, rendendo più difficile fare le cose nel modo "sbagliato". La cosa principale da tenere a mente è che non si dovrebbe accedere al router (o altro) tramite una variabile globale. Fare così è una pratica generalmente cattiva, che porta a un codice molto difficile da testare. Sfortunatamente con il vecchio router è stato abbastanza facile fare qualcosa come App.router.transitionTo('whatever') - puoi trovare esempi di tutto questo, ma non è una buona idea.

Invece di lavorare con un riferimento globale, ember inietta i riferimenti locali al router solo in quei punti in cui è necessario.

  • Da un modello: inaccessibile. I modelli non devono parlare al router
  • Da un controller: router = this.get('target')
  • Da una vista: la vista non deve accedere al router, ma gli eventi inviati al controller si riempiono di bolle. Ad esempio: this.get('controller').send('search', term)
  • Da un modello: utilizzare gli helper {{action}} o {{#linkTo}} per inviare eventi (tramite il controller) o passare a un altro URL.

Per ulteriori dettagli, vedere le note a questo impegno: https://github.com/emberjs/ember.js/commit/5becdc4467573f80a5c5dbb51d97c6b9239714a8

** Aggiornamento **

Ho messo insieme un fulmine parlare avanti con maggiori dettagli sul nuovo router di gennaio EmberNYC Meetup - diapositive sono qui: How I learned to stop worrying and love the router

+0

E dal percorso è accessibile come 'get (questo, 'router')' – Pavel

1

credo che questo funziona in tutto il luogo:

App.Router.router.transitionTo('home')

Lo uso in una vista. Sono consapevole che qui c'è un po 'di odore di codice. Tuttavia, funziona.

+0

Sicuramente un odore di codice. Invece, inviare un'azione e gestirla in un percorso di transizione. –

1

Si può provare questo:

App.__container__.lookup('router:main').transitionTo('name_of_your_route'); 
+1

Questo è OK da fare per il debug ma dovrebbe essere evitato nel codice di produzione. –

Problemi correlati