Dopo aver ispezionato di nuovo l'oggetto router, non vedo alcuna proprietà in là che vi permetterà di afferrare l'ultimo percorso. Nel pre 4 c'era una proprietà per l'ultimo percorso, ma era una proprietà difficile con cui lavorare.
La mia soluzione è quindi la stessa di come era nel pre 4: creerei il mio mixin per gestire i percorsi in cui navighi, e da quell'elenco di percorsi, puoi ottenere qualunque strada tu stia cercando: quello attuale, l'ultima, eccetera ...
jsFiddle qui: http://jsfiddle.net/sMtNG/
mixin
la prima cosa da fare è creare il mixin che ci permetterà di spingere i percorsi in a HistoryController
. Possiamo farlo creando un metodo setupController
che ovviamente viene richiamato ogni volta che ci si sposta in una rotta.
App.HistoryMixin = Ember.Mixin.create({
setupController: function() {
this.controllerFor('history').pushObject(this.get('routeName'));
}
});
stiamo spingendo il percorso nella HistoryController
.
Storia controller
Dal momento che stiamo attualmente spingendo la routeName
in un inesistente HistoryController
, avremo bisogno di andare avanti e creare quella, che è assolutamente niente di speciale.
App.HistoryController = Ember.ArrayController.extend();
controller Indice
Dal momento che i HistoryController
memorizza l'elenco delle rotte che abbiamo navigato in, avremo bisogno accessibile su altri controller, come il IndexController
, saremo perciò l'uso needs
per specificare in quale controller dovrebbe essere accessibile.
App.ApplicationController = Ember.Controller.extend({
needs: ['history']
});
Implementare Mixin
Ora abbiamo tutto quello che serve per mantenere una traccia dei percorsi, e così noi provvederemo a specificare che i nostri percorsi devono implementare questo mixin.
App.CatRoute = Ember.Route.extend(App.HistoryMixin);
Template
Ultimo ma non meno importante, ora che abbiamo un HistoryController
cui il nostro IndexController
possono accedere, e il mixin spinge ogni percorso accessibile nella HistoryController
, possiamo usare la nostra visione applicazione per l'uscita un elenco dei percorsi e specificare l'ultimo percorso. Naturalmente nel tuo caso ti servirà l'ultima rotta meno uno, ma non ha senso farmi fare tutto!
<h1>Routes History ({{controllers.history.length}})</h1>
<ul>
<li>Last Route: {{controllers.history.lastObject}}</li>
{{#each controllers.history}}
<li>{{this}}</li>
{{/each}}
</ul>
Spero che questo ti porti dritto e stretto.
possibile duplicato di http: // stackoverflow.it/questions/14831668/the-route-i-came-from-or-previous-route –
Sto lavorando anche a questo problema. Sarebbe bello in una successiva versione MVC se ci fosse qualcosa di simile: Request.RawUrl.PreviousRoute – JoshYates1980
Basta fare 'history.back()'. È così che Ember è progettato per funzionare. Non è necessario costruire un sacco di macchinari per mantenere la propria storia. Il browser mantiene sempre il suo. –