Vue實現詳情頁編輯完數據返回列表頁時,根據列表頁面原有搜索以及分頁條件刷新列表數據


第一步:保留住搜索條件

在項目的公共數據請求方法頂部添加以下代碼:

if(options.data && options.data.holdConditions) {
    window.location.replace(`${window.location.href.split('#')[0]}#${encodeURIComponent(JSON.stringify(options.data))}`)
}
  • options表示請求的參數,holdConditions表示是否需要保留頁面參數,如果需要,就將參數以hash的方式添加在頁面的url后面,此處必須用replace替換url,不然返回上一頁時會需要返回兩次。
  • 列表頁面每次請求列表數據時,都會將搜索條件作為urlhash值添加到url的后面,給url添加hash值是不會刷新頁面的。
  • 同時替換url的另一個優勢在於,詳情頁面完成操作之后,通過this.$router.go(-1)返回列表頁面時,列表頁的url上面會保留hash值,可以通過解析url直接拿到這些參數。

第二步:寫一個解析url的公共方法

// 格式化參數
export const formatSearchField = (searchField) => {
    if (window.location.href.split('#').length === 2) {
        let params = JSON.parse(decodeURIComponent(window.location.href.split('#')[1]))
        searchField = Object.assign(searchField, params)
    }
    return searchField
}

第三部:解析參數,刷新列表數據

在進入頁面的時候盡早的調用第二步的公共方法解析url,並賦值給搜索條件對象,可以在created或者mounted方法中進行
this.searchField = formatSearchField(this.searchField)
賦值之后就可以調用列表數據請求的函數了


免責聲明!

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



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