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

请问选择器(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

楼上正解,支持一下

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