切克闹
切克闹
  • 发布:2015-10-07 11:27
  • 更新:2015-10-07 21:31
  • 阅读:1856

app应用打开时index页面没有显示等待框?

分类:MUI
mui

因为首页的数据是ajax拼接的。所以我想的打开应用时显示一个等待框,然后数据加载完成时(index_list()执行后),再关闭,但是应用打开时并没有出现等待框?
而从其他页面打开index页面时,会显示等待框,但是无法关闭。

mui.init({  
                waiting:{  
                    autoShow:false  
                }  
});  

window.addEventListener("pagebeforeshow",function(){  
    plus.nativeUI.showWaiting("正在加载...",{padlock: true});  
});  

window.onload = function() {  
    index_list();  
    mui.plusReady(function() {  
              plus.nativeUI.closeWaiting();  
   }
2015-10-07 11:27 负责人:无 分享
已邀请:
Danny

Danny - QQ125904483

1.事件是不是应该绑定到WebView上?
http://www.dcloud.io/docs/api/zh_cn/webview.shtml#plus.webview.WebviewEvent

2.关闭Waiting不是你这么干的吧?
http://www.dcloud.io/docs/api/zh_cn/nativeUI.shtml#plus.nativeUI.showWaiting
http://www.dcloud.io/docs/api/zh_cn/nativeUI.shtml#plus.nativeUI.Waiting.close

var waiting = plus.nativeUI.showWaiting( title, options );  
waiting.close();
  • 切克闹 (作者)

    您好,我改成了这样还是无法显示等待框

    var w_index=null;

    window.onload = function() {

    mui.plusReady(function() {

    main = plus.webview.currentWebview();

    main.addEventListener("loading",function(){

    w_index=plus.nativeUI.showWaiting("正在加载...",{padlock: true});

    });

    index_list();

    if(w_index!=null){

    w_index.closeWaiting();

    }

    }

    2015-10-07 16:18

chender

chender - 与人为善

应该是时机问题,第一次打开某个webview的时候,loading事件会在plusReady之前,所以你在plusReady里绑定loading事件,回调不会被执行到;
你说的这种效果应该很简单啊,
ajax用异步的,在ajax之前显示等待框,ajax的回调里关闭等待框就是了

  • 切克闹 (作者)

    您好,loadding事件的执行等级和window.onload是一样的吗?

    那我一开始这要写没有执行,也是这个原因吗?

    window.addEventListener("pagebeforeshow",function(){

    plus.nativeUI.showWaiting("正在加载...",{padlock: true});

    });

    2015-10-08 09:46

  • chender

    onload是浏览器自带的事件,pagebeforeshow、loading等事件是html5+中的事件机制,这些事件理论上都会在onload事件之后才被再被触发,但是由于是两个线程(5+的和浏览器的),所以后触发的不一定会被后调到

    2015-10-08 11:47

  • 切克闹 (作者)

    非常感谢

    2015-10-08 14:40

该问题目前已经被锁定, 无法添加新回复