NavigationViewをルートパネルとして使用しています。私が達成しようとしているのは、ユーザが自分のアプリケーションをより深くナビゲートし、ユーザが戻ったときにそれらをポップするときに、ルートパネルにビューをプッシュすることです。使い方Sencha NavigationView、深いリンクとブラウザの履歴
ここに私の問題を示す簡単な例があります:いくつかのエントリの詳細を示す1つのタイプのビューがあります。 「エントリ/:ID」、及び新しいentrydetailsはnavigationstack(NavigationView)このルートマッチ上に表示プッシュ
Ext.define('MyApp.view.EntryDetails', {
extend: 'Ext.Panel',
xtype: 'entrydetails',
config: {
tpl: '<div>{id}</div>'
}
});
Iは、以下のルートをリッスンするように構成されたコントローラを有します。
Ext.define('MyApp.controller.EntryDetails', {
extend: 'Ext.app.Controller',
config: {
routes: {
'entry/:id': 'showEntry'
},
refs: {
navview: 'mynavigationview'
},
},
showEntry: function(id){
this.getMain().push({
xtype: 'entrydetails',
data: {id:id}
});
}
});
これは正常です。ここでまずindex.html#entry/1に移動すると仮定します。これは、私が望むのと同じように、新しいビューをスタックにプッシュします。次に、別のリンクindex.html#entry/2をクリックします。別のビューがスタックにプッシュされますが、これも意図した動作です。今、BROWSERSの戻るボタンをクリックすると問題が表示されます。これにより、URLがindex.html#entry/1に変更され、別のビューがスタックにプッシュされます。私は別のものを追加するのではなく、ビューをポップしたかったのです。ツールバーのバックボタンを押すと、私の望むように表示がポップされますが、ブラウザの戻るボタンの場合はそうではありません。
なぜこれが起こっているのか理解しています:Senchaのタッチフレームワークは、以前のブラウザの履歴URLと同じURLの別のリンクを私が押しているためにURL変更が行われたかどうかわかりません。私のブラウザ。そして、私のコードで知っているのは、 "entry /:id"へのurl変更を見たときに、別のビューをスタックにプッシュする必要があるということです。
この問題を解決する最良の方法は何ですか。ブラウザの戻るボタンが押されたことを検出し、ナビゲーションビューからの表示をポップする方法を教えてください。
私は、変更されたURLがsimularだったかどうかを確認することを考えました。これはナビゲーションスタック上のビューにはさらに下にありますが、それができるかどうかはわかりません。
トピックに関するご意見・ご感想はありがとうございます。
は、あなたの答えをいただき、ありがとうございます。これは行く方法と思われる。 – jorgenfb