少し調べたところから始めますが、単純なJQMの変更であると思われるものを解決する解決策はありません。
次のビュー ユーザー フローを持つワイン レビュー Web アプリがあります: http://5buckchuck.com/
ワインの種類 > ワイン リスト > ワインの詳細 > ワインのレビュー (django backto 経由でリダイレクト) > レビューから更新されたワインの詳細
私がやりたいことは、ユーザーが戻るボタンを押したときにワインリストに戻ることです。現在起こっていることは、Wine Detail ビューがリロードされることです。ワイン リストに戻るには 3 回戻る必要があります。:-(
これを解決するための私の考えは2つでした:
履歴スタックの最後の項目が Wine Review だった場合、履歴スタックの最後の 3 つの項目をスプライスします。最後の履歴オブジェクトをイントロスペクトして pageURL を取得するのに苦労しました。ただし、このソリューションは少し壊れやすいと感じています。
var last_hist = $.mobile.urlHistory.getActive(); last_hist.data.pageURL;
2 番目の考えは、戻るボタンの動作をオーバーライドして、Wine Detail ビューの戻るボタンが常に Wine リスト ビューに戻るようにすることでした。
$('div#wine_detail').live('pageshow',function(event, ui){ $("a.ui-btn-left").bind("click", function(){ location.replace("/wines/{{wine.wine_type}}/#"); }); });
おそらくこれを行うためのより良い方法がありますが、私は少しアイデアがありません。
更新: したがって、私はこれをハッキングし続けていますが、結果はやや無視できます。私が見つけたのは、これが私が基本的に作業する必要があるものであるということでした:window.history.go(-3)
コンソールから、まさに私が必要とすることを行います。
だから私はそれを次のように戻るボタンにバインドしようとしました:
$('div#wine_detail').live('pageshow',function(event, ui){
var last = $.mobile.urlHistory.stack.length - 1;
var last_url = $.mobile.urlHistory.stack[last].url;
var review_url = /review/g;
if (last_url.match(review_url) )
{
$('div#wine_detail a.ui-btn-left').bind( 'click', function( ) {
console.log("click should be bound and going back in time...")
window.history.go(-2);
});
}
else
{
console.log('err nope its: ' + last_url);
}
});
サイコロはありません。何かがトランザクションを中断しています...