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获取才可获取到。有关异步加载问题找个时间整理一下。

posted @ 2017-03-10 09:25  小学生求进步  阅读(2373)  评论(0)    收藏  举报