如何在显示对话框时使jQuery Mobile不操作哈希

时间:2012-03-27 15:52:17

标签: jquery-mobile backbone.js

我有一个jQuery Mobile +骨干网站。为了与主干一起玩,我也禁用了这样的路由:

$(document).bind("mobileinit", function () {
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;     });

我想在我的jQM +骨干网站上通过js显示一个对话框:

 $.mobile.changePage("#dialog",
        {
            transition: 'pop',
            role: 'dialog', 
            changeHash:false
        }); 

问题是,这会触发哈希更改事件。我的页面路由器选择了这个并路由到一个不正确的页面,远离对话框。

为什么带对话框的简单changePage会忽略changeHash参数?还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:0)

我知道这是一个很老的线程 - 但问题如下:

通过:$.mobile.hashListeningEnabled = false;您正在禁用jqm路由工具,因此jqm不会监听哈希更改,但骨干路由器会这样做。您需要做的是在相应的主干视图中定义一个事件,其中对话框应该打开 - 如下所示:

var YourView = Backbone.View.extend({

[...]

events: {
   "click #myDialog: "openMyDialog"
},

openMyDialog:function() {
   [Call your Dialog/Popup here]
}


})