目的是:
保證不同的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);