ルータオブジェクトを再度検査した後、最後のルートを取得できるプロパティは表示されません。プレ4では、最後のルートのためのプロパティがあったが、それは操作するのは難しいプロパティでした。
私の解決策は前の4と同じです:あなたがナビゲートしたルートを処理するために私自身のミックスインを作成し、そのルートリストから、あなたが行っているルートを得ることができます:現在の、最後の1、エトセトラ...ここ
jsFiddle:http://jsfiddle.net/sMtNG/
MIXIN
まず最初に行うには、私たちはにルートをプッシュすることができますミックスインを作成することですa HistoryController
。 setupController
メソッドを作成すると、ルートに移動するたびに呼び出されます。
App.HistoryMixin = Ember.Mixin.create({
setupController: function() {
this.controllerFor('history').pushObject(this.get('routeName'));
}
});
HistoryController
に経路をプッシュしています。
歴史コントローラー
我々は現在、存在しないHistoryController
にrouteName
をプッシュしているので、私たちは絶対に特別なものではありませんこれは、先に行くと、それを作成する必要があります。
App.HistoryController = Ember.ArrayController.extend();
インデックスコントローラは
HistoryController
店ので、我々はにナビゲートしてきたルートのリストには、我々はそのようなIndexController
などの他のコントローラー、上でアクセス可能なことをする必要があります、私たちはそのためneeds
を使用しますアクセス可能にするコントローラを指定します。
App.ApplicationController = Ember.Controller.extend({
needs: ['history']
});
は、我々は今、我々はルートを追跡するために必要なすべてを持っているのmixin
を実装し、私たちは私たちのルートは、このミックスインを実装する必要があることを指定します。
App.CatRoute = Ember.Route.extend(App.HistoryMixin);
今我々はIndexController
がアクセスすることができ、そしてミックスインはHistoryController
にそれぞれアクセスルートをプッシュし、我々は出力に我々のアプリケーションのビューを使用することができます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>
私はこれがあなたを真っ直ぐに狭めてくれることを願っています。
可能な複製のhttp:// stackoverflow。com/questions/14831668/the-route-i-came-from-from-or-previous-route –
私もこの問題を解決しています。それは、次のようなものがあれば、後のMVCバージョンでいいでしょう:Request.RawUrl.PreviousRoute – JoshYates1980
'history.back()'を実行してください。それがEmberが動作するように設計された方法です。あなた自身の歴史を維持するための機械をたくさん作る必要はありません。ブラウザはすでに独自のものを保持しています。 –