再次检查路由器对象后,我看不到任何可以让您获取最后一条路由的属性。在前 4 中,最后一条路线有一个属性,但它是一个难以使用的属性。
因此,我的解决方案与前 4 中的解决方案相同:我将创建自己的 mixin 来处理您导航到的路线,并且从该路线列表中,您可以获得您想要的任何路线:当前路线,最后一个,等等……
jsFiddle在这里:http: //jsfiddle.net/sMtNG/
米信
首先要做的是创建允许我们将路由推送到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>
我希望这能让你走上正轨。