Jquery mobile 对话框上的“关闭”按钮返回到错误页面
这里有一把非常简单的小提琴: 如果单击标题栏中的“预设”按钮,将打开一个对话框。如果单击对话框上的“关闭”按钮,它将转到页面上的最后一页(对话框本身除外)(内容为Jquery mobile 对话框上的“关闭”按钮返回到错误页面,jquery-mobile,dialog,knockout.js,Jquery Mobile,Dialog,Knockout.js,这里有一把非常简单的小提琴: 如果单击标题栏中的“预设”按钮,将打开一个对话框。如果单击对话框上的“关闭”按钮,它将转到页面上的最后一页(对话框本身除外)(内容为的那一页是另一页)。怎么会?是否有办法修复自动插入的后退按钮,使其正常运行(如对话框中包含的“主页”按钮),或者,如果没有,是否有办法删除关闭按钮 <div data-role="page" id="index"> <header data-role="header"> <h1>In
的那一页是另一页
)。怎么会?是否有办法修复自动插入的后退按钮,使其正常运行(如对话框中包含的“主页”按钮),或者,如果没有,是否有办法删除关闭按钮
<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修复了我的第一把小提琴。然而,我的实际情况要复杂一点,如这把小提琴所示:
在这里,我实际上是使用knockout动态创建页面,并通过数据绑定为这些页面分配ID,但由于某种原因,jQuery Mobile似乎无法识别这些ID。如果您使用Firebug查看,您可以看到ID已正确添加到页面的属性中,但是当您关闭对话框时,您将进入第3页而不是原始页面
更新2
简单的修复,我只是在knockout将用作模板的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被knockout替换,因此指向该页面的链接正常工作,jQuery mobile似乎很高兴 将
id
添加到其他页面
<div data-role="page" id="anotherpage">
This is another page
</div>
这是另一页
然后它会起作用,请参见回到另一个解决方案,因为您提到:有办法删除关闭按钮吗?是的,只需添加此样式,另请参见
.ui对话框.ui标题a[数据图标=删除]{
显示:无;
}
还有一个演示好的,这样就解决了我小提琴的问题,但是,当然,我真正的系统有点复杂。这些额外的页面是由knockout动态创建的,它们确实有ID,但jQuery Mobile似乎忽略了它们。这可能是另一个问题,它是由jquerymobile做它的事情和knockout做它的绑定的顺序引起的。好吧,我想我已经找到了一个解决方案。这既愚蠢又有黑客行为,但如果我只是在我的模板中添加一个假ID,那么jQuery mobile似乎会很高兴它能正常工作。Knockout将通过数据绑定到正确的id来替换id,但它似乎可以工作。再次感谢。我还没有试过,但我相信它可能会起作用。这种方法的唯一缺点是,如果jquerymobile的未来版本决定更改布局或类名,它可能会中断。
<style>
.ui-dialog .ui-header a[data-icon=delete] {
display: none;
}
</style>