Как изменить поведение кнопки «Назад» в мобильной истории jQuery

Я начну с того, что я немного исследовал, но нет решения, которое решает то, что кажется простой модификацией JQM..

У меня есть веб-приложение для обзора вин со следующим пользовательским потоком: http://5buckchuck.com/

Тип вина > Список вин > Сведения о вине > Обзор вина (перенаправление через django обратно на )> Сведения о вине обновлены из обзора

Что Я хочу, чтобы когда пользователь нажимал кнопку «Назад», он возвращался к списку вин. В настоящее время происходит перезагрузка представления Wine Detail. Чтобы вернуться к списку вин, нужно нажать три раза назад.:-(

У меня было две мысли решить эту проблему.:

  1. Склеить последние 3 элемента из стека истории, если последние элементы в стеке истории были Wine Review. Мне было трудно проанализировать последний объект истории, чтобы получить URL-адрес страницы. У меня есть ощущение, что это решение слишком хрупкое.

    var last_hist = $.mobile.urlHistory.getActive();
    last_hist.data.pageURL;
    
  2. Вторая мысль заключалась в том, чтобы переопределить поведение кнопки «Назад», чтобы кнопка «Назад» из представления 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);
   }
 });

Нет игральных костей, что-то прерывает транзакцию...

13
задан bmartinek 5 May 2012 в 17:31
поделиться