因公司需要,本人从安卓开发转战h5开发,若有不对指出,请指出,请勿喷!这是我在自学过程,开发公司项目遇到的问题。
按照之前论坛已经有大神给出 修改 mui.indexedlist.js对应部分为
init: function(holder, options) {
var self = this;
mui.ajax('url', {//
data: {
},
dataType: 'json', //服务器返回json格式数据
type: 'post', //HTTP请求类型
timeout: 10000, //超时时间设置为10秒;
success: function(data) {
var table = document.body.querySelector('.mui-table-view');
var html="",
for (var i = 0; i < data.length; i++) {
//插入数据
html= "你需要的数据";
}
table.innerHTML = html;
self.init1(holder, options);
},
error: function(xhr, type, errorThrown) {
console.log(type);
}
});
},
init1: function(holder, options) {
var self = this;
self.options = options || {};
self.box = holder;
if (!self.box) {
throw "实例 IndexedList 时需要指定 element";
}
self.createDom();
self.findElements();
self.caleLayout();
self.bindEvent();
},
即可发现数据就加载列表上了。 如果你的 数据源 已经安装 字母顺序分好类 ,按照demo 中 分别将数据 添加到对应的
<li data-group="A" class="mui-table-view-divider mui-indexed-list-group">A</li> 下面即可。
如果数据源没有进行分类,例如数据源如下格式:{"cRealName":"XX","cTelephoneNumber":"137xxxxxxxxx","cDepartmentName":"董事长办公室"}
这是项目中后台给我返回的数据源。 几经周折我如下 修改 完成项目需求。
var table = document.body.querySelector('.mui-table-view');
var htmla=""; //一个字母创建一个 ,即可
var b=0,a=0;//
for (var i = 0; i < data.length; i++) {
//插入数据
var s=makePy(data[i].cRealName)+"";//此方法为 将返回的姓名 转为 大写首字母缩写 ,百度即可 如 李二 转为LR
var shouzimu=s.substr(0, 1); //此方法获取 首字母 。
//首字母 为 A的
if(shouzimu=="A"){
if (a==0) {
htmla += '<li data-group="A" class="mui-table-view-divider mui-indexed-list-group">A</li> <li data-value='+s+ 'data-tags='+s+' class="mui-table-view-cell mui-indexed-list-item">'+data[i].cRealName+'</li>';
a=a+1;
} else{
htmla +='<li data-value='+s+ 'data-tags='+s+' class="mui-table-view-cell mui-indexed-list-item">'+data[i].cRealName+'</li>';
}
}
}
table.innerHTML = htmla;//要按照 字母顺序添加 对应字母的 字符串即可
self.init1(holder, options);
这样不管数据源如何返回 都会按照首字母 排序下来。