點擊table tr項後,頁面跳轉到下級頁面,返回回顯搜索條件、當前頁碼、並將點擊項select選中、滾動條也被記錄回顯跳轉時滾動的位置html
思路:vue
1.頁面臨時緩存我選擇使用sessionStorage,點擊tr行將搜索條件和頁碼,點擊行的id進行存儲;ios
setSessionStore (name, content) { if (!name) return if (typeof content !== 'string') { content = JSON.stringify(content) } window.sessionStorage.setItem(name, content) }, getSessionStore (name) { if (!name) return; var content = window.sessionStorage.getItem(name); if (typeof content == 'string') { content = JSON.parse(content) } return content; }, removeSessionStore (name) { if (!name) return return window.sessionStorage.removeItem(name) } }
2.進入頁面取出sessionStorage,在init請求返回值後,進行table選中、分頁回顯;element-ui
data(){ return { paginationShow: false, 控制分頁器顯示 頁面中使用v-if pager:{ total: 0, currentPage: 1, pageSize: 20, } } }
形成的緣由:咱們返回當前頁面取得總條數totalNum以前,element-ui的分頁組件已經在頁面加載完畢,當時的totalNum綁定的是data裏面初始化的數據0,因此當總條數爲0的時候,分頁組件的頁碼默認爲1。而且當totalNum在created生命週期裏取得數據後,分頁組件也不會刷新。因此這就致使, 頁面內容正確,可是頁碼高亮依舊是第一頁。axios
解決辦法:咱們須要在created以後刷新這個分頁組件或者讓分頁組件的html後於created以後加載到頁面。再次刷新這個分頁組件是不現實的,咱們選擇在created以後加載分頁組件。具體辦法就是使用v-if。在totalNum不爲data裏面給的初始值0的時候,才讓這段html加載到頁面。緩存
init () { axios.post('/url',param).then(function (response) { // 進行數據複製loading等操做 if(!myVM.paginationShow){ if(myVM.storeId){ **myVM.$nextTick(function(){** var storage = []; myVM.dataTable.forEach(function(item, index){ if(item.clueId === myVM.storeId ){ storage.push(myVM.dataTable[index]); } }) myVM.toggleSelection(storage); // 根據存儲的滾動位置,將table滾動位置回顯在頁面上 **myVM.$el.querySelector('.el-table__body-wrapper').scrollTop = mycustomVM.scrollTop; ** }) } }else{ myVM.removeSessionStore ("storeForm"); myVM.removeSessionStore ("otherVal"); } mycustomVM.paginationShow = true; mycustomVM.storeForm = mycustomVM.form; }) }, toggleSelection(rows) { // table select 默認選中 if (rows) { rows.forEach(row => { this.$refs.multipleTable.toggleRowSelection(row,true); }); } else { this.$refs.multipleTable.clearSelection(); } }, toLink(row){ // 跳轉進行存儲 var clueId=row.clueId; this.setSessionStore("storeForm", this.storeForm); var otherVal = { "currentPage": this.pager.currentPage, "clueId": clueId, "scrollTop": **this.$el.querySelector('.el-table__body-wrapper').scrollTop** } this.setSessionStore("otherVal", otherVal); window.location.href='跳轉連接,可攜帶參數'; }, mounted(){ document.getElementById('myVue').style.display = 'block'; }, created(){ // 進入頁面判斷有是否有存儲值,取出後,進行初始化init函數 if(!this.paginationShow){ var storeVal = this.getSessionStore("storeForm"); var otherVal = this.getSessionStore("otherVal"); if(storeVal && otherVal){ this.form = storeVal; this.$set(this.pager,"currentPage",otherVal.currentPage); this.storeId = otherVal.clueId; this.scrollTop = otherVal.scrollTop; } } } window.sessionStorage.clear(); // 點擊側邊欄、退出時-清除全部cookie(若是帳號被擠掉,退出的時候須要多考慮一下)
實現思路是這樣,具體代碼要根據實際項目開發cookie