这是一个非常简单的小提琴:
如果单击标题栏中的“预设”按钮,则会打开一个对话框。如果您单击对话框上的“关闭”按钮,而不是返回它来自的页面,它会转到页面上的最后一页(不包括对话框本身)(包含内容的页面This is another page
)。怎么来的?有没有办法修复自动插入的后退按钮,使其行为正常(就像我在对话框中包含的“主页”按钮),或者如果失败了,有没有办法删除关闭按钮。
<div data-role="page" id="index">
<header data-role="header">
<h1>Index</h1>
<a href="#presets" data-icon="star" class="ui-btn-right" data-transition="pop" data-rel="dialog">Presets</a>
</header>
<article data-role="content">
<div>This is the main page</div>
</article>
</div>
<div data-role="page">
This is another page
</div>
<div data-role="page" id="presets">
<header data-role="header">
<h1>Presets</h1>
<a href="#index" data-icon="home" data-iconpos="notext"></a>
</header>
<div data-role="content">
This is a dialog!
</div>
</div>
更新
正如 Taifun 所指出的,问题在于页面上缺少 id。添加一个 id 修复了我的第一个小提琴。但是,我的实际情况稍微复杂一些,如下图所示:
在这里,我实际上是使用敲除动态创建页面,并通过数据绑定为这些页面分配 ID,但是,jQuery Mobile 似乎由于某种原因无法识别这些 ID。如果您查看 Firebug,您可以看到 id 已正确添加到页面的属性中,但是当您关闭对话框时,您最终会进入第 3 页而不是原始页面。
更新 2
简单的修复,我只是在敲除将用作模板的 html 位中添加了一个虚拟 id:
<!-- ko foreach: pages -->
<div data-role="page" data-bind="attr: {id: name}" id="dummy">
This is <span data-bind="text:name"></span>
</div>
<!-- /ko -->
见这里。
虚拟 id 被淘汰赛取代,因此指向该页面的链接可以正常工作,并且 jQuery mobile 似乎很高兴!