route error ember beforemodel ember.js ember-router

ember.js - error - ember transition



¿Cómo puedo obtener mi ruta anterior? (2)

¿Cómo puedo obtener mi enrutador anterior en mi controlador actual.

App.MyController = Em.ObjectController.extend({ next:function() { // This is my action helper in HBS this.transitionTo(''nextPage''); }, back:function() { // This is my action helper in HBS // Here I need to dynamically identify my previous route. // How can I get my previous route. } });


Después de haber inspeccionado nuevamente el objeto enrutador, no veo ninguna propiedad allí que le permita tomar la última ruta. En pre 4 había una propiedad para la última ruta, pero era una propiedad difícil para trabajar.

Por lo tanto, mi solución es la misma que en la versión 4: crearía mi propia mezcla para manejar las rutas en las que navega, y de esa lista de rutas, puede obtener cualquier ruta que busque: la actual, el último, etcétera ...

jsFiddle aquí: http://jsfiddle.net/sMtNG/

Mezclar

Lo primero que debe hacer es crear la mezcla que nos permita empujar las rutas en un HistoryController . Podemos hacerlo creando un método setupController que, por supuesto, se invoca cada vez que te mueves en una ruta.

App.HistoryMixin = Ember.Mixin.create({ setupController: function() { this.controllerFor(''history'').pushObject(this.get(''routeName'')); } });

Estamos empujando la ruta en el HistoryController .

Controlador de historia

Ya que actualmente estamos presionando el routeName en un routeName inexistente, tendremos que seguir adelante y crear eso, que no es nada especial.

App.HistoryController = Ember.ArrayController.extend();

Controlador de índice

Como el HistoryController almacena la lista de rutas en las que hemos navegado, lo necesitaremos accesible en otros controladores, como el IndexController , por lo tanto, usaremos las needs para especificar en qué controlador debe estar accesible.

App.ApplicationController = Ember.Controller.extend({ needs: [''history''] });

Implementar Mixin

Ahora tenemos todo lo que necesitamos para hacer un seguimiento de las rutas, por lo que especificaremos que nuestras rutas deben implementar esta combinación.

App.CatRoute = Ember.Route.extend(App.HistoryMixin);

Modelo

Por último, pero no menos importante, ahora que tenemos un HistoryController que nuestro IndexController puede acceder, y el mixin empuja cada ruta a la que accedemos al HistoryController , podemos usar nuestra vista de aplicación para generar una lista de las rutas, y especificar la última ruta. Por supuesto, en tu caso necesitarás la última ruta menos una, ¡pero no tiene sentido que yo haga todo!

<h1>Routes History ({{controllers.history.length}})</h1> <ul> <li>Last Route: {{controllers.history.lastObject}}</li> {{#each controllers.history}} <li>{{this}}</li> {{/each}} </ul>

Espero que esto te lleve a la recta y estrecha.


Las soluciones actuales se sienten como la cola moviendo al perro.

La solución simple es hacer window.history.back()

Ember no realiza un seguimiento del historial del enrutador, ya que sería redundante. Todos los navegadores ya manejan esto por defecto.