PopoApple
PopoApple
  • 发布:2015-09-15 15:59
  • 更新:2016-07-01 17:32
  • 阅读:18747

请问选择器(Picker)怎样设置默认选项呀?急!

分类:MUI
2015-09-15 15:59 负责人:无 分享
已邀请:

最佳回复

houfeng2016

houfeng2016

Picker (这是指 PopPicker) 创建实例并填充数据后,可以设定每个层级的选中项,因为 PopPicker 是支持多层级联的,所以,可通过 instance.pickers[index] 拿到指定层级的实例,然后,通过 setSelectedIndex 或 setSelectedValue 设定指定层级的选中项,如下代码供参考:

var pk = new mui.PopPicker(options);  
pk.setData(data);  
pk.pickers[index].setSelectedIndex(itemIndex);  
pk.pickers[index].setSelectedValue(itemValue);
PopoApple

PopoApple (作者)

可以了,谢谢!提个意见,你们的官网应该全面的提供这些API文档呀,要不别人没法用

露珠

露珠

设置第二个默认值需要延时,如下图,请将此设置方法写到文档中

PopoApple

PopoApple (作者)

还有,我想设置一个参数,就是每个项的高度,我看到代码里是这个变量:DEFAULT_ITEM_HEIGHT = 30,但是找来找去也没找到有对外接口可以设置它,难道要改源码吗?

  • houfeng2016

    这个值没有公开 API


    2015-09-15 20:08

  • houfeng2016

    你用的哪个版本?DEFAULT_ITEM_HEIGHT 值应该是 40 的,另外,item 的 height ,通过样式定义即可,picker 组件会尝试获取 offsetHeight ,取不到时才会使用 DEFAULT_ITEM_HEIGHT


    2015-09-16 17:05

近水楼台

近水楼台

好像pk.pickers[index].setSelectedValue(itemValue);这个对于三级联动只能设置第一列的默认值,其他两列的都还是默认在第一个数据上?

  • 别闹我有枪

    cityPicker.pickers[0].setSelectedValue(130000);

    setTimeout(function(){

    cityPicker.pickers[1].setSelectedValue(130200);

    },100);


    我侧过了,就是选择完第一个第二个效果还没显示完,所以不选择,设个延时就好了。希望对以后的朋友有帮助。


    2016-05-17 09:58

  • 近水楼台

    回复 别闹我有枪:666


    2016-12-26 21:58

近水楼台

近水楼台

也是不太清楚哪里出问题了0 0

  • 近水楼台

    cityPicker3.pickers[0].items是有值...


    2015-10-29 16:28

  • qmit

    请问你是怎么解决的呢?


    2016-07-22 23:37

Che001

Che001

在mui.poppicker.js中的 show方法中 设置是可以的。
例:
self.pickers[0].setSelectedIndex(1);
self.pickers[1].setSelectedIndex(2);
self.pickers[2].setSelectedIndex(3);

好冷

好冷 - 诚接外包,QQ:23380891

//保险公司选择  
var carTypeOpt = [{  
	value: '0',  
	text: '平安汽车保险'  
}, {  
	value: '1',  
	text: '阳光汽车保险'  
}, {  
	value: '2',  
	text: '中国人保汽车保险'  
}, {  
	value: '3',  
	text: '中华联合汽车保险'  
}, {  
	value: '4',  
	text: '天安汽车保险'  
}, {  
	value: '5',  
	text: '太平洋汽车保险'  
}];  
// 选择保险公司  
	var companyPicker = new mui.PopPicker();  
	var companySelect = document.getElementById('editinsurance_company');  
	var insurance_company = document.getElementById('insurance_company');  
	companyPicker.setData(carTypeOpt);  
	for (var i = 0; i < carTypeOpt.length; i++) { //遍历车型数组,返回id  
		if (insurance_company.value == carTypeOpt[i].text) {  
			companyPicker.pickers[0].setSelectedIndex(carTypeOpt[i].value); //使modelsPicker默认显示所选项  
//TODO 此处应直接使用modelsPicker.pickers[0].setSelectedValue(carTypeOpt.value) 但是不工作  
		}  
	}  
	companySelect.addEventListener('tap', function(event) {  
		companyPicker.show(function(items) {  
			insurance_company.innerText = items[0].text;  
			saveJson = '{"insurance_company":"' + items[0].text + '"}';  
			console.log(mklog() + '|//TODO NEED AJAX:' + saveJson);  
		});  
	}, false);

我用setSelectedIndex好用了,但是需要自己遍历一遍id,效率太低了

传说中的setSelectedValue,我就没能用过,给他啥都不吃

井盖被盗小心

井盖被盗小心

按索引来,嵌套,不过效率低
var Province = doc.getElementById("ProvinceHid").value;
var City = doc.getElementById("CityHid").value;
var Area=doc.getElementById("AreaHid").value

		for (var i = 0; i < cityData3.length; i  ) {  
            //省  
		    if (Province == cityData3[i].text) {  
		        cityPicker3.pickers[0].setSelectedIndex(i);   
		    }  
		    if (cityData3[i].children != null) {  
		        var CityJson = cityData3[i].children;  
		        for (var j = 0; j < CityJson.length; j  ) {  
		            //市  
		            if (City == CityJson[j].text) {			                 
		                cityPicker3.pickers[1].setSelectedIndex(j);  
		            }  
		            if (CityJson[j].children != null) {  
		                var AreaJson = CityJson[j].children;  
		                for (var k = 0; k < AreaJson.length; k  ) {  
		                    //地区  
		                    if (Area.length > 0) {  
		                        if (Area == AreaJson[k].text) {			                           
		                            cityPicker3.pickers[2].setSelectedIndex(k);  
		                        }  
		                    }  
		                }  
		            }  
		        }  
		    }		     

		}
bufan

bufan

mui 联动选择初始化很多人都遇到问题,就是setselectedvalue 不好用,实际上这个地方应该是有bug的

所以只能用setselectedindex 来实现
具体实现可参考
http://www.cnblogs.com/bindot/p/muipick.html

中华人民共和国

中华人民共和国

选择第二个级联的可以将代码写在如下位置:
cityPicker.setData(cityData);
cityPicker.pickers[0].setSelectedValue('120000');
cityPicker.pickers[1].setItems(cityPicker.pickers[0].getSelectedItem().children);
cityPicker.pickers[1].setSelectedValue('120105');

露珠

露珠

同问,设置二级默认值不起作用setSelectedValue,求解

xulboy

xulboy

楼上正解,支持一下

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