mui:动态创建多个picker组件

因开发需求升级,需要动态创建多个picker组件;
功能需求
1.图一
mui:动态创建多个picker组件
2.图二
mui:动态创建多个picker组件

//点击产品分类,出现下拉框
   $("#distributArea").on("tap", function () {
        setTimeout(function () {
            distributArea.show(function (items) {

                $("#distributArea").val((items[0] || {}).text + " " + (items[1] || {}).text + " " + (items[2] || {}).text);
                $("#cate_name").val((items[2]).text);
                $("#cate_id").val((items[2]).id); 

                //调取分类属性
                getAttribute((items[2]).id);             
                          
            });
        }, 200);
    });  
   //产品分类属性(这里就是图一中选择好参数后,会调用到的数据)
    function getAttribute(cate_id)
    {
        var data = {
            cate_id:cate_id,
        };
        $.getJSON('/h5/trade/product/attribute', data, function (info) {
            
            var str='';
            var datas = info.content;
            console.log(datas);
            /*if(datas.length == 0){
                mui('#trunkList').pullRefresh().endPullupToRefresh(true);
            }else{
                mui('#trunkList').pullRefresh().endPullupToRefresh(false);
            }*/
            for (var i = 0; i < datas.length; i++) {
                cold = datas[i];
                if(cold['attr_type'] == '1'){ //单选
                    str+='<div class="mui-clearfix mttb1">'
                    +'<i class="mui-pull-left xingNone"></i>' 
                    +'<span class="moreCheck">'+cold['attr_name']+':'
                    +'<em class="mui-pull-right wd4zi73">'
                    for(var j = 0 ; j<datas[i].chiild.length; j++){
                         colds = cold.chiild[j];
                        str+='<i><input type="radio" name="LadderQuotation" class="field-radio field-radiof88106 zicon" checked="">'
                        +'<em>'+colds['text']+'</em>'
                        +'</i>'                        
                    }
                    str+='</em></span></div>'

                }else if(cold['attr_type'] == '2'){//多选
                    str+='<div class="mui-clearfix mttb1">'
                    +'<i class="mui-pull-left xingNone"></i>'
                    +'<span class="moreCheck">'+cold['attr_name']+':'
                    +'<em class="mui-pull-right wd4zi73">'
                    for(var j = 0 ; j<datas[i].chiild.length; j++){
                        colds = cold.chiild[j];
                        str+='<i><input type="checkbox" name="LadderQuotation" class="field-check field-checkf88106 zicon" checked="">'
                        +'<em>'+colds['text']+'</em>'
                        +'</i>'                        
                    }                    
                    str+='</em></span></div>'
                                                   
                }else if(cold['attr_type'] == '3'){//文本框
                    str+='<div class="mui-clearfix mttb1">'
                    +'<i class="mui-pull-left xingNone"></i>'
                    +'<span>'+cold['attr_name']+':<em class="mui-pull-right wd6zi65">'
                    +'<input class="formInput " type="text" placeholder="">'
                    +'</em></span></div>'
                                                  
                }else if(cold['attr_type'] == '4'){//下拉框
                //图二中,这里创建多个下拉框;重点这data-setmeal这个属性上,把数据遍历到这个属性中
						     var strpp='';
						    for(var j = 0 ; j<cold.chiild.length; j++){
						        var proDart=cold.chiild[j].text;
						        strpp+=proDart+',';
						    }
						    strpp=(strpp.substring(strpp.length-1)==',')?strpp.substring(0,strpp.length-1):strpp;
						    str+='<div class="selectBox">'
						            +'<div class="mui-clearfix mttb1 pr">'
						            +'<i class="mui-pull-left xingNone"></i>'
						            +'<span>'+cold['attr_name']+':<em class="mui-pull-right wd6zi65">'
						            +'<input id="dropdown" class="formInput userResult dropdown" data-setmeal="'+strpp+'" type="text" placeholder="" "this.blur()"readonly="readonly">'
						            +'<img class="trDownImg" src="../themes/cool/trade/img/public/[email protected]" alt="">'
						            +'</em></span></div>'
						            +'</div>'

                }
                                                                               
            }            
            $('.attribute').append(str);

        });                
    }

//当点击每个下拉框的时候,将data-setmeal属性值取出,并放入picker.setData数据中,就能每点击一次,即可在创建一个新的下拉框,并有相应的数据
   $(document).on('tap','#dropdown',function () {
		    var that = $(this);
		    var that_values = that.attr("data-setmeal");
		    var oldArr = that_values.split(",");
		    var newArr = [];
		    var picker = new mui.PopPicker();
		    for(var i=0,length=oldArr.length;i<length;i++){
		    //这里是转换成picker能用的数据格式
		        newArr.push({value:oldArr[i],text:oldArr[i]});
		    }
		    picker.setData(newArr);
		    picker.show(function(items) {
		        that.val(items[0].value);
		    
		})
});

重点描述

1.这个效果为多级联动,每一个联动都有很多动态属性。
2.这里创建多个下拉框;重点这data-setmeal这个属性上,把数据遍历到这个属性中;
3.当点击每个下拉框的时候,将data-setmeal属性值取出,并放入picker.setData数据中,就能每点击一次,即可在创建一个新的下拉框,并有相应的数据
4.这里没有上html代码,页面不复杂,主要是比较乱。这种数据效果,还是看js比较方便