我正在使用 jquery mobile 开发一个移动应用程序,并且我有一个从 AJAX Web 服务调用动态填充的页面。这会创建一个链接列表,然后进一步过滤页面。例如,第一次加载页面时,它会获取分配给根类别的所有类别(在本例中为 0)。然后每个列表项都包含一个类别参数,该参数是每个类别 ID。但这意味着当您单击列表中的子项目时,它会向下加载下一个级别。
我遇到的问题是历史。如果我向下钻取列表并单击后退按钮,它会将我带回类别列表页面,但参数为 0 而不是我所在的最后一页可能是类别 ID 2。
创建动态页面时,jquery mobile 是否无法正确保留历史记录。
我已经按照这个例子,无法弄清楚为什么历史不能正常工作http://jquerymobile.com/test/docs/pages/page-dynamic.html。
我在导航栏中有此代码,可将您带到初始类别列表页面:
<li><a href="#category_page?category=0" id="shop-button" data-icon="custom" data-transition="none">Shop</a></li>
然后,我使用以下代码填充页面:
var webServiceURL = "http://localhost/GV/mobileservices/AppsWebService.asmx";
function getCategories(parentId) {
var parameters = "{'parentID':" + parentId + "}";
$.mobile.showPageLoadingMsg();
$('#categoriesList').empty();
$.ajax({
type: "POST",
url: webServiceURL + "/GetCategories",
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var t = "";
data = $.parseJSON(data.d);
categoriesJSON = data;
$.mobile.hidePageLoadingMsg();
$.each(data, function (index, item) {
t = t + "<li><a href=\"#category_page?category=" + item.CategoryID + "\" title=\"" + item.CategoryTitle + "\">" + item.CategoryName + "</a></li>";
});
$('#categoriesList').append(t).listview('refresh');
$('#categoriesContent').iscrollview("refresh");
$.mobile.hidePageLoadingMsg();
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$.mobile.hidePageLoadingMsg();
alert(errorThrown);
}
});
};
function showCategory(urlObj, options) {
var categoryID = urlObj.hash.replace(/.*category=/, "");
var pageSelector = urlObj.hash.replace(/\?.*$/, "");
var $page = $(pageSelector),
$header = $page.children(":jqmData(role=header)");
$header.find("div").find("h3").html("Category");
$page.page();
options.dataUrl = urlObj.href;
$.mobile.changePage($page, options);
setTimeout("getCategories(" + categoryID + ")", 100);
}
// Listen for any attempts to call changePage().
$(document).bind("pagebeforechange", function (e, data) {
if (typeof data.toPage === "string") {
var u = $.mobile.path.parseUrl(data.toPage),
re = /^#category_page/;
if (u.hash.search(re) !== -1) {
showCategory(u, data.options);
e.preventDefault();
}
}
});
有人可以帮我吗 ?创建动态页面时,我可以手动将每个页面/网址添加到历史记录吗?
谢谢,
克里斯