1

jquery mobileを使用してモバイルアプリを開発していますが、AJAXWebサービス呼び出しから動的に入力するページがあります。これにより、リンクのリストが作成され、ページがさらに絞り込まれます。たとえば、ページが初めて読み込まれると、ルートカテゴリ(この場合は0)に割り当てられているすべてのカテゴリが取得されます。各リストアイテムには、各カテゴリIDであるカテゴリパラメータが含まれます。ただし、これは、リスト内のサブアイテムをクリックすると、次のレベルが読み込まれることを意味します。

私が抱えている問題は歴史にあります。リストをドリルダウンして[戻る]ボタンをクリックすると、カテゴリリストページに戻りますが、最後のページではなくパラメータ0を使用すると、カテゴリID2になる可能性があります。

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();
    }
}
});

誰かが私を助けることができますか?動的ページを作成するときに、各ページ/ URLを履歴に手動で追加できますか?

ありがとう、

クリス

4

0 に答える 0