思路:
1.瀏覽器緩存永久保存搜索歷史數據.
2.頁面初始化將數據保存到頁面變量中.
3.對搜索歷史記錄的怎加和刪除,要同步到緩存中.
----------------直接看代碼----------------
*前端使用的是vue,這里只是代碼片段*
1.頁面的 div
<!---歷史搜索begin----> <div style="margin-top: 46px"> <div v-if="this.showFlag === true" class="search-history"> <div class="tip-words"> <div style="float: left;"> <h4>搜索歷史</h4> </div> <div style="float: right;" @click="clearHistoryItems"> <img src="../../img/img/delete-1.png" width="16px"/> </div> </div> <p style="margin-bottom: 10px"> </p> <div v-for="(item,index) in searchHistoryList" :key="index" @click="searchByHistoryKeyWord(item)" class="history-keywords"> {{item}} </div> </div> </div> <!---歷史搜索end---->
2. vue data
data() { return { // 搜索歷史 searchHistoryList: [], // 標記顯示搜索歷史 showFlag: false, loadShow: false } },
3.vue 搜索歷史的一些方法
methods: { showHistory() { if (this.searchHistoryList.length > 0) { this.showFlag = true } }, // 清空歷史記錄 clearHistoryItems() { localStorage.removeItem('historyItems') this.searchHistoryList = [] this.showFlag = false }, // 過濾一個結果的空記錄添加,過濾空搜索 appendKeywords(value) { /** * 1.已經有的關鍵詞不再添加 * 2.添加到數組的首位,若超出10個則刪除最后一個 * 3.添加到緩存 */ var appendFlag = true if (this.searchHistoryList !== null && this.searchHistoryList !== undefined && this.searchHistoryList.length > 0) { this.searchHistoryList.forEach(function(currentValue, index) { if (currentValue === value) { appendFlag = false return } }) // 判斷-添加 if (appendFlag === true) { // 長度判斷 if (this.searchHistoryList.length >= 10) { this.searchHistoryList.unshift(value) this.searchHistoryList.pop() } else { this.searchHistoryList.unshift(value) } localStorage.setItem('historyItems', JSON.stringify(this.searchHistoryList)) } } else { this.searchHistoryList = [] this.searchHistoryList.push(value) localStorage.setItem('historyItems', JSON.stringify(this.searchHistoryList)) } }, searchByHistoryKeyWord(item) { this.loadTip = '' this.queryData.inputInfo = item // 查詢 fetchGetDataByKeyWord(item).then(response => { // 查詢賦值 this.dataList = response.data.body.data if (this.dataList.length === 0) { this.loadTip = '沒有符合條件數據' this.showHistory() } else { this.loadTip = '' this.showFlag = false } }) } }