bui复选框select 异步加载数据
Bui/select 在加载数据源时,数据源如果采用$.post的方式获取数据,则无法获取到数据源,原因是bui加载属于异步加载,在post执行完之前,bui已经加载完成。因此无法得到post返回的数据集。因此可将bui控制在post内部使用。获取玩数据再去加载bui,解决bui/select 异步加载无法获取数据问题。
function initTrunkLink(shortName) {
var trunkLinkArr = [];
$.post(contextPath + 'getIndexCommonAction/getAllIndex.cn', {
shortName : shortName
}, function(data) {
var allIndex = eval(data);
$.each(allIndex, function(i, index) {
var obj = {};
obj.value = index.id;
obj.text = index.indexName;
trunkLinkArr.push(obj);
});
// bui加载数据
BUI.use('bui/select',function(Select){
selectTrunkLink = new Select.Select({
render:'#s3',
valueField:'#trunkLink',
multipleSelect:true,
items:trunkLinkArr
});
selectTrunkLink.render();
$.ajax({
type : "POST",
data:{"shortName" : shortName},
url : contextPath + "getIndexCommonAction/getDataMap.cn",
dataType : "json",
async : false,
success: function(data){
var indexData2 = eval(data);
if(indexData2.length!=0){
var indexs2=indexData2[0].id;
for(var i=1;i<indexData2.length;i++){
indexs2+=","+indexData2[i].id;
}
selectTrunkLink.setSelectedValue(indexs2);
}
}
});
});
}, 'json');
}
并且在如果要初始化select,给select默认选中某个选项时,则不可以用$.post获取,使用ajax获取才可获取到。有关异步加载问题找个时间整理一下。
浙公网安备 33010602011771号