【发布时间】:2011-11-29 15:36:20
【问题描述】:
我读过here,您不能在每个jqMobile 页面上使用$(document).ready()。相反,建议使用pageInit() 和pageCreate()。这一切都很好,但我不太确定如何实施它。
假设我有一个 URL 列表,这些 URL 都指向单独的报告。每个报告都会有各种需要在页面加载时发生的事情。
我是否必须将所有页面逻辑放入主页中?
这是一个笼统的问题,但我会举一个具体的例子来说明我正在尝试做的事情。
MVC3 Layout 页面包含我的 head 元素以及所有脚本引用。
然后我有我的索引页:
<div data-role="page" data-add-back-btn="true">
<div data-role="content">
<div class="content-primary">
<ul data-role="listview" data-theme="a">
<li data-role="list-divider" data-theme="a">Category 1</li>
<li><a href="someUrl" data-transition="slideup">Link 1</a></li>
</ul>
</div>
</div>
然后是我的报告的单独登录页面:
<div data-role="page" data-add-back-btn="true">
<div data-role="header" data-theme="a">
<h1>Report 1</h1>
<a id="btnOpts" data-icon="gear" class="ui-btn-right" data-rel="dialog" data-transition="pop">Options</a>
</div>
然后我的选项对话框的最后一页:
<div id="dlgOpts" data-role="page" data-theme="a">
<div data-role="content">
<h2>Please select the report options:</h2>
<div data-role="fieldcontain">
<label for="startDate">Start Date:</label>
<input type="date" id="startDate" data-role="datebox" data-options='{"mode": "datebox"}' />
</div>
<div data-role="fieldcontain">
<label for="endDate">End Date:</label>
<input type="date" id="endDate" data-role="datebox" data-options='{"mode": "calbox"}' />
</div>
<div class="ui-grid-a">
<div class="ui-block-a"><a href="#" data-icon="back" data-role="button" data-rel="back">Cancel</a></div>
<div class="ui-block-b"><a href="#" data-icon="check" data-role="button" data-rel="back">Ok</a></div>
</div>
</div>
我的目标是从列表中加载报告,当报告加载时,显示选项对话框。如果我将它内嵌在页面中,它总是会循环回到选项,因为它会在对话框关闭时触发(我猜这是它下方页面的完全重新加载?)。
简而言之:如何在我的报告页面加载时加载对话框,然后在选项对话框关闭时执行某事?
【问题讨论】:
-
将所有 javascript 放入您的索引或您首先加载的页面中
标签: jquery jquery-ui asp.net-mvc-3 jquery-mobile jquery-events