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它刷新了页面但没有显示测试细节。这个问题是什么?
答案 0 :(得分: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'的功能。
或者,可拦截click
和vclick
事件并直接处理以添加参数支持,例如在页面转换之前将参数保存在变量中。
答案 1 :(得分: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.