0

jQueryモバイルを使用してAsp.net mvcでネストされたリストビューを作成します.2つのサブビューがあります.最初のサブビュー1に移動するとメインビューに戻ることができますが、サブビュー1からサブビュー2に移動するとサブビュー1に戻ることができません. subview1 はどういうわけか null です。

私のレイアウトページにこのスクリプトを入れました

 <script>
    $(document).on('mobileinit', function () {
        $.mobile.page.prototype.options.addBackBtn = true;
        $.mobile.page.prototype.options.backBtnText = "Back";
        $.mobile.page.prototype.options.backBtnTheme = "a";
        $.mobile.defaultPageTransition = "slide";

    });
</script>

メインページは次のとおりです。

<script>

$(document).on('click', '[data-rel=back]', function (e) {
    e.preventDefault();
    var activepage = $.mobile.activePage.attr("id");

    if (activepage == "schedule")
        $.mobile.changePage($('#flight'), { transition: "slide", reverse: false });

    if (activepage == "dayFlight") {
        $.mobile.changePage($('#schedule'), { transition: "slide", reverse: false });
    }
});

<div data-role="page" id="flight" data-add-back-btn="true">
<div data-role="content">
    <ul id="flightListView" data-role="listview" data-inset="false" data-filter="true">
        @foreach (var item in Model)
        {
            <li>
                <a href="@Url.Action("Schedules", new { from = item.DepartureFrom, to = item.Destination })" data-direction="reverse" data-transition="slide">
                    <span class="ui-li-count ui-btn-up-c ui-btn-corner-all">@item.NumberOfFlights</span>
                </a>
            </li>
        }
    </ul>
</div>

サブビュー1は次のとおりです。

<div data-role="page" data-add-back-btn="true" id="schedule">
<div data-role="content">
    <ul id="scheduleListView" data-role="listview" data-inset="false" data-filter="false">
        @foreach (var item in Model)
        {
            <li>
                <a href="@Url.Action("DayFlights", new { from = from, to = to, date = item.Date })" data-direction="reverse" data-transition="slide">
                    <span class="lg">@Html.DisplayFor(modelItem => item.Day)</span>
                    <span class="lg number laligned">@Html.DisplayFor(modelItem => item.Date)</span>
                    <span class="ui-li-count ui-btn-up-c ui-btn-corner-all">@item.Nof</span>
                </a>
            </li>
        }
    </ul>
</div>

subview2 は次のとおりです。

<div data-role="page" data-add-back-btn="true" id="dayFlight">
<div data-role="content">
    <ul id="dayListView" data-role="listview" data-inset="true" data-filter="false">
        @foreach (var item in Model)
        {
            <li>
                <a href="@item.AgencyUrl" rel="external" data-ajax="false">
                    <span class="ui-li-count ui-btn-up-c ui-btn-corner-all">@item.Cap</span>
                </a>
            </li>
        }
    </ul>
</div>

サブビュー1に移動すると、メインビューとサブビュー1の両方がDOMにありますが、サブビュー2に移動すると、サブビュー1がサブビュー2に置き換えられるため、サブビュー2にいるときにサブビュー1が行うことを意味しますDOM には存在しません。

すべてのケースで $.mobile.activePage.prev('.ui-page'); null を返すため、if 句を使用してどのページに戻るかを決定することにしましたが、subview2 から subview1 に戻りたい場合は機能しません。

このシナリオを実装するにはどうすればよいですか?

前もって感謝します

4

0 に答える 0