vue2 element 實現表格點擊詳情,返回時保留查詢參數

先直觀一點,上圖

列表共5條數據,準備輸入Author過濾條件進行查詢
在這里插入圖片描述

進入查看詳情頁,就隨便搞了個按鈕 啥都沒調啦
在這里插入圖片描述
點擊返回后
在這里插入圖片描述

一開始準備用vuex做這個功能,后來放棄了,想到直接用路由去做可能也不錯。有時間再整一套vuex版的

<!--* @Author: chenhaoran* @Date: 2024-03-03 13:44:10* @LastEditors: chenhaoran* @LastEditTime: 2024-03-03 23:07:02
-->
<template><div class="app-container"><div class="search-area"><el-form :inline="true" :model="queryParams" class="demo-form-inline"><el-form-item label="Author"><el-input v-model="queryParams.author" placeholder="作者"></el-input></el-form-item><el-form-item label="Status"><el-select v-model="queryParams.status" placeholder="狀態"><el-option label="發布" value="published"></el-option><el-option label="刪除" value="deleted"></el-option><el-option label="草稿" value="draft"></el-option></el-select></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">查詢</el-button><el-button type="primary" @click="reset">重置</el-button></el-form-item></el-form></div><el-tablev-loading="listLoading":data="list"element-loading-text="Loading"borderfithighlight-current-row><el-table-column align="center" label="ID" width="95"><template slot-scope="scope">{{ scope.$index }}</template></el-table-column><el-table-column label="Title"><template slot-scope="scope">{{ scope.row.title }}</template></el-table-column><el-table-column label="Author" width="110" align="center"><template slot-scope="scope"><span>{{ scope.row.author }}</span></template></el-table-column><el-table-column label="Pageviews" width="110" align="center"><template slot-scope="scope">{{ scope.row.pageviews }}</template></el-table-column><el-table-column class-name="status-col" label="Status" width="110" align="center"><template slot-scope="scope"><el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag></template></el-table-column><el-table-column align="center" prop="created_at" label="Display_time" width="200"><template slot-scope="scope"><i class="el-icon-time" /><span>{{ scope.row.display_time }}</span></template></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-button @click="doView(scope.row)" type="text" size="small">查看</el-button><el-button type="text" size="small">編輯</el-button></template></el-table-column></el-table></div>
</template><script>
import { getList } from '@/api/table'
// import { createNamespacedHelpers } from 'vuex'
// const { mapMutations, mapActions } = createNamespacedHelpers('queryParams')
export default {filters: {statusFilter(status) {const statusMap = {published: 'success',draft: 'gray',deleted: 'danger'}return statusMap[status]}},beforeRouteEnter(to, from, next) {// console.log('beforeRouteEnter:', from);/*** 官方文檔是這樣寫明的:* -- start --* beforeRouteEnter 守衛不能訪問this,因為守衛在導航確認前被調用,因此即將登場的新組件還沒被創建。* 不過,你可以通過傳一個回調給 next 來訪問組件實例。在導航被確認的時候執行回調,并且把組件實例作為回調方法的參數* beforeRouteEnter (to, from, next) {next(vm => {// 通過 `vm` 訪問組件實例})}* -- end --* 重點是第二句話,說明是有方法給組件實例修改值的*//** 有問題的寫法* const data = { testMsg: '測試信息'}* const saveData = data* next(vm => {* 在這里卡了很久,這樣寫的話,組件created抑或mounted里,可以訪問data的屬性,但卻拿不到beforeRouteEnter中定義的屬性*  //vm.saveData = saveData*  //vm.$set(vm, 'saveData', saveData)* * })* * 執行順序:* beforeRouteEnter* beforeCreate* mounted* vm*/
// 有效處理let obj = {}if (from.name == 'itemDetail') {obj = from.params} else {obj = {}}next(vm => {/*** 在這里卡了很久后,嘗試將設置value寫入methods方法中使用vm來調用,* mounted拿不到beforeRouteEnter這里定義的變量,但是它可以訪問vm實例的變量和方法* 再將beforeRouteEnter這定義的對象作為函數參數*/ vm.setFilterParams(obj)})},data() {return {list: null,listLoading: false,queryParams: {author: '',status: ''},}},created(){this.fetchData()},mounted() {// if (//   Object.keys(this.$store.state.queryParams.filterParams).length === 0// ) {//   this.queryParams = {//     // pageNum: 1,//     // pageSize: 10,//     author: '',//     status: ''//   };// } else {//   this.queryParams = JSON.parse(//     JSON.stringify(this.$store.state.queryParams.filterParams)//   );// }},methods: {// ...mapActions(["filterCache"]),setFilterParams(obj) {this.queryParams = Object.assign({},obj)this.fetchData()},fetchData() {this.listLoading = truelet queryParams = this.queryParamsgetList(queryParams).then(response => {this.list = response.data.itemsthis.listLoading = false})},// 查看doView(row) {this.$router.push({/* path與params不可同時出現 */// path: 'table/itemDetail',name: 'itemDetail',params: this.queryParams})},// 查詢onSubmit() {// this.$store.dispatch("queryParams/filterCache", this.queryParams);// this.filterCache(this.queryParams)this.fetchData()},reset() {this.queryParams = {}this.fetchData()}}
}
</script>

上面重點部分就是beforeRouteEnter了:

beforeRouteEnter(to, from, next) {// console.log('beforeRouteEnter:', from);/*** 官方文檔是這樣寫明的:* -- start --* beforeRouteEnter 守衛不能訪問this,因為守衛在導航確認前被調用,因此即將登場的新組件還沒被創建。* 不過,你可以通過傳一個回調給 next 來訪問組件實例。在導航被確認的時候執行回調,并且把組件實例作為回調方法的參數* beforeRouteEnter (to, from, next) {next(vm => {// 通過 `vm` 訪問組件實例})}* -- end --* 重點是第二句話,說明是有方法給組件實例修改值的*//** 有問題的寫法* const data = { testMsg: '測試信息'}* const saveData = data* next(vm => {* 在這里卡了很久,這樣寫的話,組件created抑或mounted里,可以訪問data的屬性,但卻拿不到beforeRouteEnter中定義的屬性*  //vm.saveData = saveData*  //vm.$set(vm, 'saveData', saveData)* * })* * 執行順序:* beforeRouteEnter* beforeCreate* mounted* vm*/
// 有效處理let obj = {}if (from.name == 'itemDetail') {obj = from.params} else {obj = {}}next(vm => {/*** 在這里卡了很久后,嘗試將設置value寫入methods方法中使用vm來調用,* mounted拿不到beforeRouteEnter這里定義的變量,但是它可以訪問vm實例的變量和方法* 再將beforeRouteEnter這定義的對象作為函數參數*/ vm.setFilterParams(obj)})},
在這里插入代碼片
<!--* @Author: chenhaoran* @Date: 2024-03-03 14:59:08* @LastEditors: chenhaoran* @LastEditTime: 2024-03-03 22:31:39
-->
<template><div class="item-detail"><el-button @click="handleClick">返回</el-button></div>
</template><script>
export default {name: 'itemDetail',data() {return {}},created() {// console.log(this.$route);},methods: {handleClick() {/*** go(-1): 原頁面表單中的內容會丟失;* this.$router.go(-1):后退+刷新;* this.$router.go(0):刷新;* this.$router.go(1) :前進* * back(): 原頁表表單中的內容會保留;在返回界面傳遞參數;* this.$router.back():后退 ;* this.$router.back(0) 刷新;* this.$router.back(1):前進* */this.$router.back()}},watch: {}
}
</script><style></style>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一篇文章了解和使用Map和Set(HashMap/TreeMap/HashSet/TreeSet)

[本節目標] *掌握HashMap/TreeMap/HashSet/TreeSet的使用 *掌握了解HashSet和HashSet背后的哈希原理和簡單的實現 1. 搜索樹 1.1 概念 二叉搜索樹又稱二叉排序樹,它或者是一顆空樹,或者是具有以下性質的二叉樹: 1.若它的左子樹不為空&#xff0c;則左子樹上所有節點的值都…

【一起學習Arcade】(2):Geometry函數

第二篇記錄下Geometry函數&#xff0c;相對于其它語言&#xff0c;Arcade對Geometry的支持是一大亮點&#xff0c;這使得它的上限被大大提高了。 三、Geometry函數 1、Angle【角度】 單位為度&#xff08;0-360&#xff09;&#xff0c;正北為90度&#xff0c;只考慮x-y平面。…

07OpenCV 圖像模糊

文章目錄 圖像掩膜操作模糊原理均值濾波高斯濾波中值濾波雙邊濾波算子代碼 圖像掩膜操作 圖像掩膜操作 模糊原理 Smooth/Blur是圖像處理中最簡單和常用的操作之一 使用操作的原因之一就是為了給圖像預處理時候減低噪聲 圖像噪聲是指存在于圖像數據中的不必要的或多余的干擾信…

RK3568開發筆記-qt程序運行報錯Failed to move cursor on screen

目錄 前言 一、qt程序運行報錯 二、異常解決 總結 前言 最近在進行 RK3568 平臺上的 Qt 程序開發時&

使用 Docker 部署 MrDoc 在線文檔管理系統

1&#xff09;MrDoc 介紹 MrDoc 簡介 MrDoc 覓思文檔&#xff1a;https://mrdoc.pro/ MrDoc 使用手冊&#xff1a;https://doc.mrdoc.pro/p/user-guide/ MrDoc 可以創建各類私有化部署的文檔應用。你可以使用它進行知識管理、構建團隊文庫、制作產品手冊以及在線教程等。 Mr…

在Java中如何使用Lambda表達式進行函數式編程

在Java中如何使用Lambda表達式進行函數式編程 在Java中&#xff0c;使用Lambda表達式進行函數式編程主要涉及以下幾個步驟&#xff1a; 理解函數式接口&#xff1a; 函數式接口是一個只有一個抽象方法的接口。Java 8引入了FunctionalInterface注解&#xff0c;用于標記這樣的接…

linux安全--DNS欺騙,釣魚網站搭建

目錄 一&#xff0c;實驗準備 首先讓client能上網 1&#xff09;實現全網互通&#xff0c;實現全網互通過程請看 2&#xff09;SNAT源地址轉換 3&#xff09;部署DHCP服務 4)配置DHCP服務 5&#xff09;啟動服務 6&#xff09;安裝DNS服務 7&#xff09;DNS配置 8)啟動DNS…

【Python筆記-設計模式】策略模式

一、說明 策略模式是一種行為設計模式&#xff0c;它定義了一系列算法&#xff0c;將每個算法封裝起來&#xff0c;并使它們可以互相替換。 (一) 解決問題 在需要根據不同情況選擇不同算法或策略&#xff0c;規避不斷開發新需求后&#xff0c;代碼變得非常臃腫難以維護管理。…

如何將圖片保存成視頻(imageio、opencv和ffmpeg)

測試下來發現&#xff0c;imageio 速度比 cv2 的要慢&#xff0c;所以普通保存推薦 cv2&#xff0c;要gpu加速需要額外配置或者修改 imageio 底層也是調用的ffmpeg&#xff0c;以下是python代碼 import imageio import os# 讀取要保存為視頻的圖片 images [] for filename …

UE 打包窗口及鼠標狀態設置

UE 打包窗口及鼠標狀態設置 打包后鼠標不鎖定 顯示鼠標圖標 打包后設置窗口模式 找到打包路徑下的配置文件GameUserSettings&#xff0c;設置相關項目 FullscreenMode0表示全屏模式&#xff0c;1表示窗口全屏模式&#xff0c;2表示窗口模式

模型部署 - BevFusion - (1) - 思路總結

模型部署實踐 - BevFusion 思路總結一、網絡結構 - 總結1.1、代碼1.2、網絡流程圖1.3、模塊大致梳理 二、Onnx 的導出 -總體思路分析三、優化思路總結 學習 BevFusion 的部署&#xff0c;看了很多的資料&#xff0c;這篇博客進行總結和記錄自己的實踐 思路總結 對于一個模型我…

【代碼】Android|獲取壓力傳感器、屏幕壓感數據(大氣壓、原生和Processing)

首先需要分清自己需要的是大氣壓還是觸摸壓力&#xff0c;如果是大氣壓那么就是TYPE_PRESSURE&#xff0c;可以參考https://source.android.google.cn/docs/core/interaction/sensors/sensor-types?hlzh-cn。如果是觸摸壓力就是另一回事&#xff0c;我需要的是觸摸壓力。 不過…

軟考 系統分析師系列知識點之系統分析的任務、難點與要求(1)

所屬章節&#xff1a; 第10章. 系統分析 第1節. 系統分析概述 系統分析階段也稱為邏輯設計階段&#xff0c;其任務是根據系統設計書所確定的范圍&#xff0c;對現有系統進行詳細設計調查&#xff0c;描述現有系統的業務流程&#xff0c;指出現有系統的局限性和不足之處&#x…

Qt+libhv實現各類網絡通信方式(TCP-UDP-HTTP-WebSocket)

文章目錄 TCP通信服務端客戶端UDP通信服務端客戶端HTTP通信服務端客戶端WebSocket通信服務端客戶端參考項目下載為了實現程序的跨進程和跨主機通信,我們通常會采用網絡通信進行數據傳輸。常用的通信方式包括TCP/UDP、HTTP、WebSocket等,這些網絡通信方式各有優劣有的是短連接…

事故預測 | Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測

事故預測 | Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測 目錄 事故預測 | Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測預測效果基本描述程序設計參考資料 預測效果 基本描述 Matlab基于FuzzySVR模糊支持向量機多特征變量事故預測 運行環境: Matlab2023及以 上…

C++經典日期類實現

學完C類和對象以及四個默認成員函數&#xff0c;就可以來嘗試自己實現一下日期類。完成日期類的各種功能&#xff0c;并加強自己的代碼能力。 日期類實現 定義一個日期類 // 文件:Date.h #pragma once #include <iostream> using std::cout; using std::endl;//定義日…

C語言數組作為函數參數

有兩種情形&#xff1b; 一種是數組元素作為函數實參&#xff1b;一種是數組名作為函數參數&#xff1b; 新建一個VC6單文檔工程&#xff1b; void printshz(int , CDC* , int , int ); double getav(int a[5]); ...... void CShzcshView::OnDraw(CDC* pDC) {CShzcshDoc* pDo…

Pthon圖像處理Opencv初步:色彩轉換、打開攝像頭

文章目錄 處理流程顏色空間二值圖像攝像頭 python圖像處理教程&#xff1a;初步&#x1f4f7;插值變換&#x1f4f7;形態學處理&#x1f4f7;濾波 處理流程 opencv是跨平臺圖像處理庫&#xff0c;為許多編程語言提供了接口&#xff0c;Python自然在列&#xff0c;但在使用pip…

32單片機基礎:PWM驅動舵機,直流電機

PWM驅動舵機 接線圖如上圖所示。注意&#xff0c;舵機的5V 線不能接到面包板上的正極&#xff0c;面包板上的正極只有3.3V,是STM32提供的&#xff0c;所以要接到STLINK的5V, 我們如何驅動舵機呢&#xff1f;由之前我們介紹原理知道&#xff0c;要輸出如下圖對應的PWM波形才行…

AWTK 開源串口屏開發(11) - 天氣預報

# AWTK 開源串口屏開發 - 天氣預報 天氣預報是一個很常用的功能&#xff0c;在很多設備上都有這個功能。實現天氣預報的功能&#xff0c;不能說很難但是也絕不簡單&#xff0c;首先需要從網上獲取數據&#xff0c;再解析數據&#xff0c;最后更新到界面上。 在 AWTK 串口屏中…