1

我正在使用 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();
    }
}
});

有人可以帮我吗 ?创建动态页面时,我可以手动将每个页面/网址添加到历史记录吗?

谢谢,

克里斯

4

0 回答 0