ルーター オブジェクトを再度調べたところ、最後のルートを取得できるプロパティが見つかりません。プレ4ではラストルート用の物件がありましたが、扱いが難しい物件でした。
したがって、私の解決策は 4 より前の場合と同じです。ナビゲートするルートを処理する独自の mixin を作成し、そのルートのリストから、現在のルートを取得できます。最後のものなど...
jsFiddle はこちら: http://jsfiddle.net/sMtNG/
混入します
最初にすべきことは、ルートを にプッシュできる 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
できる があり、ミックスインがアクセスした各ルートを にプッシュしたHistoryController
ので、アプリケーション ビューを使用してルートのリストを出力し、最後のルートを指定できます。もちろん、あなたの場合、最後のルートから1を引いたものが必要になりますが、私がすべてを行う意味はありません!
<h1>Routes History ({{controllers.history.length}})</h1>
<ul>
<li>Last Route: {{controllers.history.lastObject}}</li>
{{#each controllers.history}}
<li>{{this}}</li>
{{/each}}
</ul>
これで真っ直ぐで狭い道にたどり着けることを願っています。