關於mui 時間插件 dtpicker 與下拉刷新沖突問題


mui 的部分寫法會導致插件與插件之間產生沖突,小猿最近發現很多這樣的問題,其中一個是mui 的時間插件與下拉刷新沖突。話不多說,先看時間插件常見的初始方法:

var chooseDate = function() {
	var result = mui('#result')[0];
	var btns = mui('.mui-btn');
	btns.each(function(i, btn) {
		btn.addEventListener('tap', function() {
			var _self = this;
			if(_self.picker) {
				_self.picker.show(function(rs) {
					result.value = rs.text;
					_self.picker.dispose();
					_self.picker = null;
				});
			} else {
				var optionsJson = this.getAttribute('data-options') || '{}';
				var options = JSON.parse(optionsJson);
				var id = this.getAttribute('id');
				_self.picker = new mui.DtPicker(options);
				_self.picker.show(function(rs) {
					result.value = rs.text;
					_self.picker.dispose();
					_self.picker = null;
				});
			}
		}, false);
	});
}

  最開始想到的是監聽picker的彈出可隱藏,但是隱藏好像監聽不到,最后想到picker的有個隱藏方法,然后重寫一下這個方法,在重寫的方法里面對下拉刷新做對應操作,代碼如下:

var chooseDate = function() {
	var result = mui('#result')[0];
	var btns = mui('.mui-btn');
	btns.each(function(i, btn) {
		btn.addEventListener('tap', function() {
			mui('#pullrefresh').pullRefresh().setStopped(true); //暫時禁止滾動
			var _self = this;
			if(_self.picker) {
				_self.picker.show(function(rs) {
					result.value = rs.text;
					_self.picker.dispose();
					_self.picker = null;
				});
			} else {
				var optionsJson = this.getAttribute('data-options') || '{}';
				var options = JSON.parse(optionsJson);
				var id = this.getAttribute('id');
				_self.picker = new mui.DtPicker(options);
				_self.picker.show(function(rs) {
					result.value = rs.text;
					_self.picker.dispose();
					_self.picker = null;
				});
			}
			_self.picker.hide = function() {
				//在選擇器開啟的時候會禁止頁面滾動,隱藏的時候解開
				mui('#pullrefresh').pullRefresh().setStopped(false); //開啟禁止滾動
				//下面這部分就是mui.picker.js的hide方法的源碼了,我並沒有深入分析,在此不再詳解
				var i = this;
				if(!i.disposed) {
					var n = i.ui;
					n.picker.classList.remove(mui.className("active")),
						n.mask.close(),
						document.body.classList.remove(mui.className("dtpicker-active-for-page")),
						mui.back = i.__back
				}
			}
		}, false);
	});
}

希望可以幫助到大家!!

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM