Wie kann ich meinen vorherigen Router in meinem aktuellen Controller bekommen.Wie kann ich meine vorherige Route bekommen?
Antwort
Nachdem ich das Router-Objekt erneut inspiziert habe, sehe ich dort keine Eigenschaft, mit der Sie die letzte Route abrufen können. In Pre 4 gab es eine Eigenschaft für die letzte Route, aber es war eine schwierige Eigenschaft, mit zu arbeiten.
Meine Lösung ist daher die gleiche wie in Pre 4: Ich würde meinen eigenen Mixin erstellen, um die Routen zu bearbeiten, auf denen Sie navigieren, und von dieser Liste der Routen können Sie die gewünschte Route abrufen: die aktuelle, die letzte, et cetera ...
jsFiddle hier: http://jsfiddle.net/sMtNG/
Mixin
das erste, was zu tun ist, um die mixin zu schaffen, die uns die Wege schieben können in a HistoryController
. Wir können dies tun, indem wir eine setupController
Methode erstellen, die natürlich jedes Mal aufgerufen wird, wenn Sie auf eine Route gehen.
App.HistoryMixin = Ember.Mixin.create({
setupController: function() {
this.controllerFor('history').pushObject(this.get('routeName'));
}
});
Wir schieben die Route in die HistoryController
.
History-Controller
Da wir zur Zeit sind die routeName
in einem nicht vorhandenen HistoryController
drängen, müssen wir, dass Sie vor und erstellen gehen, was besondere absolut nichts.
App.HistoryController = Ember.ArrayController.extend();
Index-Controller
Da die HistoryController
speichert die Liste von Routen wir in navigiert haben, werden wir es auf anderen Controllern zugänglich benötigen, wie zum Beispiel die IndexController
, werden wir daher needs
verwenden um festzulegen, in welchem Controller es erreichbar sein soll.
App.ApplicationController = Ember.Controller.extend({
needs: ['history']
});
Implement Mixin
Wir haben jetzt alles, was wir einen Überblick über die Routen zu halten brauchen, und wir werden so festzulegen, dass unsere Routen dieses mixin implementieren müssen.
App.CatRoute = Ember.Route.extend(App.HistoryMixin);
Vorlage
Last but not least, jetzt, wo wir eine HistoryController
haben, die unsere IndexController
zugreifen können, und die mixin drückt jede zugegriffen Weg in die HistoryController
, können wir unsere Anwendung im Hinblick auf Ausgabe verwenden eine Liste der Routen und die letzte Route angeben. In deinem Fall brauchst du natürlich die letzte Route minus eins, aber es macht keinen Sinn, alles zu machen!
<h1>Routes History ({{controllers.history.length}})</h1>
<ul>
<li>Last Route: {{controllers.history.lastObject}}</li>
{{#each controllers.history}}
<li>{{this}}</li>
{{/each}}
</ul>
Ich hoffe, dass Sie auf die gerade und enge bekommt.
Dies funktioniert für nicht dynamische Routen. Würde dieser Ansatz für Routen mit dynamischen Segmenten funktionieren? – Hoetmaaiers
Müssen Sie '_super' nicht von Ihrem' setupController' im Mixin aufrufen? –
Scheint viel zu kompliziert –
- 1. Kann ich Unterroute in Route hinzufügen :: bekommen?
- 2. Wie kann ich die vorherige Woche in Python bekommen?
- 3. Ich kann meine ANID nicht bekommen?
- 4. Laravel 5.1: Wie kann ich meine Route in Blade verwenden?
- 5. Wie kann ich JSON-Daten in meine EJS-Vorlage bekommen?
- 6. Wie kann ich mehr Informationen in meine SharePoint-Logs bekommen?
- 7. Wie kann ich meine eigenen Cursor-Koordinaten in Firefox bekommen?
- 8. Wie kann ich meine JSON-Datei zur Arbeit bekommen?
- 9. Wie kann ich meine Datenbank unter Versionskontrolle mit Perl bekommen?
- 10. Wie kann ich meine Zeilen 100% breit bekommen?
- 11. In Angular, kann ich meine Renderpfade nicht richtig bekommen
- 12. NSDate bekommen vorherige Woche, vorherigen Monat Ausgabe
- 13. , wie meine Anwendung Verzeichnisnamen bekommen
- 14. Wie leite ich meine Domain mit Amazon aws Route 53
- 15. Wie soll meine Anfrage sein, damit ich meine Unterlagen bekommen kann?
- 16. Woher soll ich meine ServiceDefinition.csdef-Datei bekommen?
- 17. Wo kann ich ein zweisprachiges Wörterbuch für meine Bewerbung bekommen?
- 18. Wie kann ich die vorherige URL in AngularJS
- 19. Wie kann ich die URL und Querystring bekommen? vb.net
- 20. In welchen Staaten verläuft meine Route?
- 21. Wie kann ich XCode auf die vorherige Version herunterstufen?
- 22. Wie kann ich einen MediumDateString bekommen?
- 23. Wie kann ich mehrere beredte Beziehungen bekommen?
- 24. Warum ruft meine Pause die vorherige Funktion
- 25. Wie kann ich meine svn-Verbindung überprüfen?
- 26. Ich kann meine Form
- 27. Symfony2/FosUserBundle - Holen Sie sich die vorherige Route vor Login
- 28. Wie kann ich den Delegierten bekommen?
- 29. Wie kann ich NSURLResponse Körper bekommen?
- 30. Wie kann ich Kontextparameterwert in Jsp bekommen?
möglich duplikat von http: // stackoverflow.com/questions/14831668/the-route-i-kam-from-or-previous-route –
Ich arbeite auch an diesem Problem. Es wäre nett in einer späteren MVC-Version, wenn es etwas wie: Request.RawUrl.PreviousRoute – JoshYates1980
Tun Sie einfach 'history.back()'. So ist Ember so konzipiert, dass es funktioniert. Es ist nicht nötig, eine ganze Reihe von Maschinen zu bauen, um Ihre eigene Geschichte zu bewahren. Der Browser behält bereits seine eigenen. –