jQuery MiniUI

标题: mini.loading为何没有进行加载 [打印本页]

作者: money    时间: 2013-12-20 14:06:56     标题: mini.loading为何没有进行加载

本帖最后由 money 于 2013-12-20 14:25 编辑

想是实现mini.loading的加载功能,在进行逻辑代码时,弹出个loading框,代码如下

var msgid = null;
msgid = mini.loading("请稍后....", "Loading");
var list = mini.get("tree").getList();
$.each(list, function() {
            此处为逻辑代码
});
mini.hideMessageBox(msgid);

请帮忙看看有什么问题?为何没有出现loading框?注:list的数据有很多,获取时间大概20秒的样子

如果我写成下面这样,会弹出loading框,但是是在处理完逻辑代码后,才弹出来的,停留5秒后结束,不是我想要的效果

var msgid = null;
msgid = mini.loading("请稍后....", "Loading");
var list = mini.get("tree").getList();
$.each(list, function() {
            此处为逻辑代码
});
setTimeout(function () {
        mini.hideMessageBox(msgid);
    }, 5000);


作者: factory    时间: 2013-12-20 16:01:24

很简单,其实是显示出来了,但是时间太短,所以你看不到

你的each内部执行时间归内部,并非说,内部执行完了,才会去执行下面的hidemessage();

你可以这样
$.each(list, function(e) {
       if(e == list.length-1)   {
            //执行hidemessage()
      }
})
作者: money    时间: 2013-12-20 17:04:01

factory 发表于 2013-12-20 16:01
很简单,其实是显示出来了,但是时间太短,所以你看不到

你的each内部执行时间归内部,并非说,内部执行完了,才 ...

按照这样的方法尝试了下,好像也不行,也没有看到loading框
作者: felt    时间: 2013-12-20 17:35:23

money 发表于 2013-12-20 17:04
按照这样的方法尝试了下,好像也不行,也没有看到loading框

$.each是不会阻塞你下面的代码,所以你直接写的时候会立即执行掉hide
放在each循环里,if(e==list.length-1)遍历到最后一项的时候触发
你试下在if里面hide前加个alert看下




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2