我将首先进行一些研究,但是没有解决方案可以解决看起来应该是简单的 JQM 修改的问题。
我有一个葡萄酒评论网络应用程序,它具有以下视图用户流程:http: //5buckchuck.com/
葡萄酒类型 > 酒单 > 葡萄酒详情 > 葡萄酒评论(通过 django 重定向回) > 葡萄酒详情从评论更新
我想要发生的是当用户按下后退按钮时它应该回到酒单。当前发生的是 Wine Detail 视图被重新加载。需要按三下才能回到酒单。:-(
我解决这个问题的想法有两个:
如果历史堆栈中的最后一项是 Wine Review,则拼接历史堆栈中的最后 3 个项目。我很难自省最后一个历史对象以获取 pageURL。我觉得这个解决方案有点太脆弱了。
var last_hist = $.mobile.urlHistory.getActive(); last_hist.data.pageURL;
第二个想法是覆盖后退按钮的行为,以便 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);
}
});
没有骰子,有什么东西打断了交易……