實現效果:
search2.gif
實現思路:用戶輸入時铅歼,重置搜索等待時間
代碼如下:
wxml:
<view class="body">
//這里就簡單粘貼下輸入框, 主要綁定 bindSearch 函數
<input class="searchBox input" placeholder="搜索"
placeholder-class="serchBox placeHolder"
maxlength="20" bindinput="bindSearch"/>
</view>
js
var api = require('../../config/api.js');
var util = require('../../utils/util.js');
Page({
data: {
params:"", //搜索條件
countTime:3000, //延遲搜索 時間
searchWaiting: false, //是否等待搜索倒計時中
},
onLoad: function(options) {
this.getCustList();
},
/**
* 獲取數據列表
*/
getCustList: function() {
var that=this;
wx.showLoading({
title: '加載中',
});
util.request(api.CustList, {
pageNum:that.data.pageNum,
pageSize: that.data.pageSize,
params: that.data.params,
}, "POST").then(function(res) {
//關閉loading
wx.hideLoading();
if (res.code == api.RequestCodeSuccess) {
that.setData({
custList: res.data.list
}
}
});
},
/**
* 輸入監(jiān)聽
*/
bindSearch:function(e){
this.setData({
countTime:3000,
params:e.detail.value,
})
//是否處于搜索倒計時中
if (!this.data.searchWaiting){
this.timer();
}
},
/**
* 延遲搜索
*/
timer: function () {
var that=this;
this.setData({
searchWaiting: true
})
let promise = new Promise((resolve, reject) => {
let setTimer = setInterval(
() => {
console.log('搜索倒計時: ' + that.data.countTime);
this.setData({
countTime: this.data.countTime - 1000
})
if (this.data.countTime <= 0) {
console.log('開始搜索: ' + that.data.params);
this.setData({
countTime: 3000,
searchWaiting: false,
})
resolve(setTimer)
}
}
, 1000)
})
promise.then((setTimer) => {
that.getCustList();//獲取客戶列表
clearInterval(setTimer)//清除計時器
})
},
})