目的是:
保证不同的Picker只创建一次,多次创建Picker系统不会自己销毁,X掉一个之后后面可能会出现下一个。
保证实现需求的情况下,优化代码,提高效率。
1.如果picker中的内容为定值
var wnddir = [{
text: "顺风",
value: 0
}, {
text: "逆风",
value: 1
}];
var wnddirPicker = new $.PopPicker();----生成picker
wnddirPicker.setData(//装载值
wnddir
);
var showWnddirPicker = document.getElementById('wnddir');
showWnddirPicker.addEventListener('tap', function(event) {//点击事件
wnddirPicker.show(function(items) {
showWnddirPicker.value = items[0].text;//展示内容
//此处可以写picker选中值所触发的其它情况
});
}, false);
2.如果多个时间框Picker
var days = $(".time");//如果一个界面多个时间框 直接控制所有时间框
days.each(function(i, day) {
day.addEventListener('tap', function() {
var _self = this;
var id = this.getAttribute('id');
if(_self.picker) {//如果picker已经存在
_self.picker.show(function(rs) {
document.getElementById(id).value = rs.text;
});
} else {//picker不存在
var optionsJson = this.getAttribute('data-options') || '{}';
var options = JSON.parse(optionsJson);
_self.picker = new $.DtPicker(options);
_self.picker.show(function(rs) {
document.getElementById(id).value = rs.text;
});
}
}, false);
});
3.Picker中内容会变化的情况
var sectnmtmPicker = new $.PopPicker();
showSectnmtmPicker.addEventListener('tap', function(event) {
rvsecttm = [];//此处是全局变量
for(var i = 0; i < __rsvcttm.length; i++) {//__rsvcttm为全局变量(就是会变化的值)此处也考虑了进程问题, 如果在rvsecttm的赋值放在外面,可能会先走赋值,后查到__rsvcttm的值,导致Picker中没有值,所以放在点击事件中
var a = {
value: __rsvcttm[i].testno,
text: __rsvcttm[i].testno
}
rvsecttm.push(a);
};
sectnmtmPicker.setData(
rvsecttm
);
sectnmtmPicker.show(function(items) {
showSectnmtmPicker.value = items[0].text;
});
}, false);