双旋风
双旋风
  • 发布:2015-06-29 23:23
  • 更新:2015-06-30 22:02
  • 阅读:2075

选项卡切换+下拉刷新 打印出数据但渲染不出数据

分类:MUI
mui

找不到原因,请大师帮帮忙。

2015-06-29 23:23 负责人:无 分享
已邀请:
双旋风

双旋风 (作者)

肯定有办法的,只是没这方面的实例参考。官方不理人了,提示一下又不会死。

w3hacker

w3hacker - www.w3hacker.com

css冲突 数据是有的 但是没显示出来 我遇到的是这样的 所以改成了 点击按钮加载

DCloud_UNI_CHB

DCloud_UNI_CHB

原因在于mui.getJSON是异步执行的,但是createFragment方法同步执行返回的fragment,其实是没数据的;

var createFragment = function(ul, index, count, reverse) {  
    var length = ul.querySelectorAll('li').length;  
    var fragment = document.createDocumentFragment();  
    var li;  
    mui.getJSON('../js/test.js',function(data){  
        //异步执行,获得结果  
        for (var i = 0; i < count; i++) {  
            console.log(data[i].name);  
            li = document.createElement('li');  
            li.className = 'mui-table-view-cell';  
            li.innerHTML = '第' + (index + 1) + '个选项卡子项-' + (length + (reverse ? (count - i) : (i + 1))) + 'id:' + data[i].id + 'name:' + data[i].name;  
            fragment.appendChild(li);  
        }                             
    });  
    //同步执行返回,此时ajax尚未响应  
    return fragment;  
};

解决方案,简单修改代码如下:

$(pullRefreshEl).pullToRefresh({  
    down: {  
        callback: function () {  
            var self = this;  
            setTimeout(function() {  
                var ul = self.element.querySelector('.mui-table-view');  

                var length = ul.querySelectorAll('li').length;  
                var fragment = document.createDocumentFragment();  
                var li;  
                mui.getJSON('../js/test.js',function(data){  
                    for (var i = 0; i < 2; i++) {  
                        console.log(data[i].name);  
                        li = document.createElement('li');  
                        li.className = 'mui-table-view-cell';  
                        li.innerHTML = '第' + (index + 1) + '个选项卡子项-' + 'id:' + data[i].id + 'name:' + data[i].name;  
                        fragment.appendChild(li);  
                    }  
                    ul.insertBefore(fragment, ul.firstChild);  
                    self.endPullDownToRefresh();  
                });  
            }, 1000);  
        }  
    }  
});

进一步抽象的话,你可以慢慢优化。

  • 双旋风 (作者)

    如何得到下拉的次数呢,因为遍历数据时,总条数除以要刷新条数有余数时,下拉圆圈转个不停。

    2015-07-02 12:50

  • DCloud_UNI_CHB

    设一个全局计数变量,每次下拉刷新回调后,计数器+1

    2015-07-02 15:39

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