2014-03-05 25 views
1
i have in jquery mobile when i passing parameter using change page. 

$("#mytest-listview div.mytest-title a").live('click', function (event,data) { 
    var cid = $(this).attr('id'); 
    console.log(cid); 

    $.mobile.changePage('../mytestdetail/',{ type: "get", data: {"id":cid} , reloadPage:false, changeHash:true }); 

    $('#pgMyTestDetail').live('pageshow', function(){ 
     var id = $.urlParam('id'); 
     doLoadMyTest(id); 

    }); 

    $.urlParam = function(name){ 
     var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
     return results[1] || 0; 
    } 
    event.preventDefault(); 

}); 

當我mytest的標題點擊它傳遞的mytest的ID,以URL,然後我得到的id值並顯示mytest的所有細節。這裏是url/test/testdetail /?id = 26,但是當我得到測試詳細信息頁面時,我點擊了ctrl + R它刷新了頁面,但沒有顯示測試細節。有什麼問題?jQuery Mobile的參數傳遞使用變化頁

+0

如果你仍然有這個麻煩,我[插件](https://github.com/CameronAskew/jquery.mobile.paramsHandler)可能會幫助 –

回答

1

從版本1.4開始,jQuery Mobile does not support page parameters。對於版本1.5,roadmap包含「根據規格的哈希/查詢參數」。

解決方法是使用自定義路由器,如Cameron Askew's paramsHandler

其他路由器選項包括jquerymobile-router,在撰寫本文時,這些選項並未與jQuery Mobile 1.4或Backbone's router保持同步,這可能需要大量集成以支持jQuery Mobile的功能。

或者,clickvclick事件可以被攔截並直接處理以增加參數支持,例如,在頁面轉換之前將參數保存在變量中。

+1

我認爲這些路由器可能出日期。我最近爲jQM 1.4 –

+1

@CameronAskew創建了一個[插件](https://github.com/CameronAskew/jquery.mobile.paramsHandler),太棒了!我已經更新了我的答案。 –

0
$("#mytest-listview div.mytest-title a").live("click", function (e) { 
      e.preventDefault(); 
      var cid = $(this).attr('id'); 
      console.log(cid); 
      $.mobile.changePage('../mytestdetail/', { type: "get", data: {"id": cid}, reloadPage: false, changeHash: true }); 


     }); 
    //}); 

    $(document).on("pageinit", "#pgTestDetail", function (e) { 
     var cid = (($(this).data("url").indexOf("?") > 0) ? $(this).data("url") : window.location.href).replace(/.*id=/, ""); 
     doLoadTest(cid); 


I write above code and its works great even refresh the page using ctrl+r.