Ответ 1
После проверки объекта маршрутизатора снова я не вижу никакого свойства, которое позволит вам захватить последний маршрут. В до 4 было свойство для последнего маршрута, но с ним было сложно работать.
Мое решение таким же образом, как и в пред 4: я бы создал свой собственный mixin для обработки маршрутов, в которые вы входите, и из этого списка маршрутов вы можете получить любой маршрут, который вы выполните: текущий, последний, и так далее...
jsFiddle здесь: http://jsfiddle.net/sMtNG/
Mixin
Первое, что нужно сделать, это создать mixin, который позволит нам продвигать маршруты в HistoryController
. Мы можем сделать это, создав метод setupController
, который, конечно, вызывается каждый раз, когда вы переходите в маршрут.
App.HistoryMixin = Ember.Mixin.create({
setupController: function() {
this.controllerFor('history').pushObject(this.get('routeName'));
}
});
Мы продвигаем маршрут в HistoryController
.
Контроллер истории
Поскольку мы в настоящее время нажимаем routeName
на несуществующий HistoryController
, нам нужно будет сделать это, что абсолютно ничего особенного.
App.HistoryController = Ember.ArrayController.extend();
Контроллер индексов
Так как HistoryController
хранит список маршрутов, в которые мы перешли, нам нужно, чтобы он был доступен на других контроллерах, таких как IndexController
, поэтому мы будем использовать needs
, чтобы указать, в каком контроллере он должны быть доступны.
App.ApplicationController = Ember.Controller.extend({
needs: ['history']
});
Реализация Mixin
Теперь у нас есть все необходимое для отслеживания маршрутов, и поэтому мы укажем, что нашим маршрутам необходимо реализовать этот mixin.
App.CatRoute = Ember.Route.extend(App.HistoryMixin);
Шаблон
И наконец, теперь, когда у нас есть HistoryController
, к которому может обратиться наш IndexController
, и mixin нажимает каждый доступный маршрут на HistoryController
, мы можем использовать наше представление приложения для вывода списка маршрутов, и укажите последний маршрут. Конечно, в вашем случае вам понадобится последний маршрут минус один, но у меня нет смысла делать все!
<h1>Routes History ({{controllers.history.length}})</h1>
<ul>
<li>Last Route: {{controllers.history.lastObject}}</li>
{{#each controllers.history}}
<li>{{this}}</li>
{{/each}}
</ul>
Я надеюсь, что это приведет вас к прямому и узкому.