我使用 jQuery mobile 在 Asp.net mvc 中创建嵌套列表视图,它有 2 个子视图,当我导航到第一个 subview1 时,我可以返回主视图,但是当我从 subview1 导航到 subview2 时,我无法返回 subview1,因为subview1 以某种方式为空。
在我的布局页面中,我把这个脚本
<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>
subview1 是:
<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>
我想出来的是,当我导航到 subview1 时,主视图和 subview1 都在 DOM 中,但是当我导航到 subview2 时,subview1 将被 subview2 替换,所以这意味着当我在 subview2 时 subview1 确实DOM 中不存在。
在所有情况下 $.mobile.activePage.prev('.ui-page'); return null,这就是为什么我决定使用 if 子句来确定我应该导航回哪个页面的原因,但是当我想从 subview2 导航回 subview1 时它不起作用。
我该如何实现这个场景?
提前致谢