gpt4 book ai didi

jquery-mobile - 如何在 changePage 期间停止调用 $.mobile.loading ('hide' 的 jQuery Mobile?

转载 作者:行者123 更新时间:2023-12-04 05:43:53 29 4
gpt4 key购买 nike

我试图阻止 jQuery Mobile 在调用 changePage 时隐藏加载微调器。

程序流程是这样的,从点击一个链接开始,它的点击事件定义如下:

$('body').delegate('.library-link', 'click',  function() {
$.mobile.loading( 'show' );
$.mobile.changePage($('#page-library'));
return false;
});

单击链接后,将触发 pagebeforeshow 事件,这会触发一个函数从本地存储填充页面,或者进行 ajax 调用以获取数据。

$(document).on('pagebeforeshow', '#page-library', function(event){
ui.populate_data();
});

ui.populate_data() 中,我们从本地存储或进行 ajax 调用获取数据。

ui.populate_data = function() {
if (localdata) {
// populate some ui on the page
$.mobile.loading( 'hide' );
} else {
// make an ajax call
}
};

如果数据存在,我们将数据加载到容器中并隐藏加载微调器。如果没有,它会进行 ajax 调用,完成后将数据保存在本地存储中,并调用 ui.populate_data()

问题是,在 pagebeforeshow 事件完成后,changePage 正在调用 $.mobile.loading( 'hide' ),即使数据可能不存在然而。除了暂时重新定义 $.mobile.loading 之外,我找不到任何方法来防止 changePage 隐藏微调器,这感觉很不对:

$('body').delegate('.library-link', 'click',  function() {
$.mobile.loading( 'show' );
loading_fn = $.mobile.loading;
$.mobile.loading = function() { return; };
$.mobile.changePage($('#page-library'), {showLoadMsg: false});
return false;
});

在我的 ui 函数中隐藏微调器之前:

ui.populate_data = function() {
if (localdata) {
// populate some ui on the page
if (typeof loading_fn === 'function') {
$.mobile.loading = loading_fn;
}
$.mobile.loading( 'hide' );
} else {
// make an ajax call
}
};

肯定有一种方法可以完全控制加载小部件的显示和隐藏,但我找不到它。我尝试将 {showLoadMsg: false} 传递给 changePage,但正如文档所建议的那样,它只在通过 ajax 加载页面时才做一些事情,而我没有这样做。

最佳答案

也许这对很多人来说太多了,但我找到了不同于评论中所写的解决方案(这对我不起作用)。

我使用 jquery mobile router在页面的“显示”事件中,我执行 $.mobile.loading("show");,因此当页面出现时它会显示加载微调器。

尽管要隐藏微调器,我不得不使用 $('.ui-loader').hide();,我知道这很奇怪...

我经常使用 Jquery Mobile Router,但它解决了这个问题。

(也许只是监听适当的事件并触发微调器也可以,因为这就是 JQMR 所做的......)

我正在使用 JQM 1.4.2...

关于jquery-mobile - 如何在 changePage 期间停止调用 $.mobile.loading ('hide' 的 jQuery Mobile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405508/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com