Я начну с того, что я немного исследовал, но нет решения, которое решает то, что кажется простой модификацией JQM..
У меня есть веб-приложение для обзора вин со следующим пользовательским потоком: http://5buckchuck.com/
Тип вина > Список вин > Сведения о вине > Обзор вина (перенаправление через django обратно на )> Сведения о вине обновлены из обзора
Что Я хочу, чтобы когда пользователь нажимал кнопку «Назад», он возвращался к списку вин. В настоящее время происходит перезагрузка представления Wine Detail. Чтобы вернуться к списку вин, нужно нажать три раза назад.:-(
У меня было две мысли решить эту проблему.:
Склеить последние 3 элемента из стека истории, если последние элементы в стеке истории были Wine Review. Мне было трудно проанализировать последний объект истории, чтобы получить URL-адрес страницы. У меня есть ощущение, что это решение слишком хрупкое.
var last_hist = $.mobile.urlHistory.getActive();
last_hist.data.pageURL;
Вторая мысль заключалась в том, чтобы переопределить поведение кнопки «Назад», чтобы кнопка «Назад» из представления Wine Detail всегда возвращалась в представление Wine list.
$('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);
}
});
Нет игральных костей, что-то прерывает транзакцию...