vue項(xiàng)目實(shí)例中用query傳參如何實(shí)現(xiàn)跳轉(zhuǎn)效果
用query傳參實(shí)現(xiàn)跳轉(zhuǎn)效果
vue中已element-ui為例,寫帶參跳轉(zhuǎn)很方便
<el-table :data="tables" style="width: 100%; cursor: pointer" :class="tableData.length > 0 ? '' : 'casesList'" :cell-style="{'text-align':'center'}" :header-cell-style="{'text-align':'center'}" > <el-button slot="empty" style="margin: 25% auto" type="primary" round @click="Newcase" >新建案件+</el-button > <el-table-column align="center" label="序號(hào)" width="80" type="index"> </el-table-column> <el-table-column label="案件名稱" align="center"> <template slot-scope="scope"> <div @click="detailed(scope.row)" slot="reference" class="name-wrapper" > <el-tag size="medium">{{ scope.row.name }}</el-tag> </div> </template> </el-table-column> <el-table-column label="案件說明" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.description }}</span> </template> </el-table-column> <el-table-column label="案件類型" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.caseType }}</span> </template> </el-table-column> <el-table-column label="創(chuàng)建人" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.createUserName }}</span> </template> </el-table-column> <el-table-column label="創(chuàng)建時(shí)間" width="200" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.createTime }}</span> </template> </el-table-column> <el-table-column label="更新時(shí)間" width="200" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.modifiedTime }}</span> </template> </el-table-column> <el-table-column label="操作" width="300" align="center"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index, scope.row)" >修改</el-button > <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)" >刪除</el-button > <el-button size="mini" @click="handleJump(scope.$index, scope.row)" >分析</el-button > </template> </el-table-column> </el-table>
用后臺(tái)接口取到數(shù)據(jù)渲染到頁面,element-ui很方便配合它自己封裝的handleJump(scope.$index, scope.row),就可以很輕松的找到你想要的值和精準(zhǔn)的操作每一行。
<script> export default { components: {}, data() { return {}; }, //計(jì)算 computed: {}, //監(jiān)聽 watch: {}, methods: { handleJump(index, row) { console.log(index, row); console.log(row.id); this.$router.push({ path: "/CaseQueryCanvas", query: {data:row }, }); }, }, //方法 mounted() {}, }; </script>
這里我是已傳對(duì)象的形式進(jìn)行傳值的,到跳轉(zhuǎn)頁面取值會(huì)比較方便,以免到跳轉(zhuǎn)頁面還需要截取自己所需的值,比較麻煩。
其中的path是需要傳值的目的地,就是要將值傳到此頁面,此路徑在
query就是你所要傳遞的對(duì)象。
接下來就是去目的地頁面接收所傳過去的參數(shù)
這里我只需要用傳過去的ID去查找和跳轉(zhuǎn)對(duì)應(yīng)的頁面,name屬性去顯示在當(dāng)前頁面上,所以用對(duì)象傳值很方便,需要哪一個(gè)取哪一個(gè)即可。
這里就只取了傳過來的ID,將id賦值給所需對(duì)象傳參跳轉(zhuǎn)相應(yīng)頁面即可。
而剛剛所說的name屬性就被我用來顯示,拿出來直接用就行
這樣就完成了傳值和動(dòng)態(tài)顯示,下面上完整代碼,是自己所寫的真實(shí)項(xiàng)目,寫的有點(diǎn)垃圾大家只看query傳參的部分就行。
傳值頁面
<template> <div style="padding: 20px"> <div> <main class="h-full pb-16 overflow-y-auto"> <div class="container grid px-6 mx-auto"> <div style="position: relative"> <a class=" flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple " href="" > <div class="flex items-center"> <svg class="w-5 h-5 mr-2" fill="currentColor" viewBox="0 0 20 20" > <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" ></path> </svg> <span>案件列表</span> </div> </a> <span id="newcanvas" @click="newcanvas">新建案件 ></span> </div> <div style="display: flex; margin-bottom: 20px"> <p class="surveyfile"> <span>案件名稱:</span ><el-input v-model="search" placeholder="請(qǐng)輸入案件名稱" ></el-input> </p> <p class="surveyfile"> <span class="timeframe">時(shí)間范圍 :</span> <el-date-picker class="shijian" v-model="value1" type="daterange" range-separator="至" start-placeholder="開始日期" end-placeholder="結(jié)束日期" > </el-date-picker> </p> <el-button type="primary" round style="margin-left: 40px; padding: 10px 20px" @click="Datequery" >搜索</el-button > <el-button round @click="Resetbutton">重置</el-button> </div> <div class="w-full overflow-hidden rounded-lg shadow-xs"> <div class="w-full overflow-x-auto"> <el-table :data="tables" style="width: 100%; cursor: pointer" :class="tableData.length > 0 ? '' : 'casesList'" :cell-style="{'text-align':'center'}" :header-cell-style="{'text-align':'center'}" > <el-button slot="empty" style="margin: 25% auto" type="primary" round @click="Newcase" >新建案件+</el-button > <el-table-column align="center" label="序號(hào)" width="80" type="index"> </el-table-column> <el-table-column label="案件名稱" align="center"> <template slot-scope="scope"> <div @click="detailed(scope.row)" slot="reference" class="name-wrapper" > <el-tag size="medium">{{ scope.row.name }}</el-tag> </div> </template> </el-table-column> <el-table-column label="案件說明" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.description }}</span> </template> </el-table-column> <el-table-column label="案件類型" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.caseType }}</span> </template> </el-table-column> <el-table-column label="創(chuàng)建人" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.createUserName }}</span> </template> </el-table-column> <el-table-column label="創(chuàng)建時(shí)間" width="200" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.createTime }}</span> </template> </el-table-column> <el-table-column label="更新時(shí)間" width="200" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.modifiedTime }}</span> </template> </el-table-column> <el-table-column label="操作" width="300" align="center"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index, scope.row)" >修改</el-button > <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)" >刪除</el-button > <el-button size="mini" @click="handleJump(scope.$index, scope.row)" >分析</el-button > </template> </el-table-column> </el-table> </div> <!-- 新建案件 --> <el-dialog title="新增案件" :visible.sync="ClickaddcaseVisible" width="50%" > <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" > <el-form-item label="案件名稱" prop="name"> <el-input v-model="ruleForm.name" maxlength="20" show-word-limit placeholder="請(qǐng)輸入案件名稱(必填)" ></el-input> </el-form-item> <el-form-item label="案件類型" prop="Typeofcase"> <el-select v-model="ruleForm.Typeofcase" placeholder="請(qǐng)選擇案件類型(必填)" > <el-option v-for="item in options" :key="item.code" :label="item.label" :value="item.code" > </el-option> </el-select> </el-form-item> <el-form-item label="警種" prop="policecategory"> <el-input placeholder="請(qǐng)輸入警種" v-model="ruleForm.policecategory" ></el-input> </el-form-item> <el-form-item label="案件說明" prop="Casedescription"> <el-input type="textarea" v-model="ruleForm.Casedescription" maxlength="200" show-word-limit placeholder="請(qǐng)輸入案件說明(必填)" ></el-input> </el-form-item> <el-form-item> <el-button @click="ClickaddcaseVisible = false" >取消</el-button > <el-button type="primary" @click="Confirmaddingcases" >確定</el-button > </el-form-item> </el-form> </el-dialog> <!-- 修改案件 --> <el-dialog title="修改案件" :visible.sync="Modifythecase" width="50%" > <div class="Clickaddcase" style="width: 90%"> <div class="Casename"> <p>案件名稱 :</p> <el-input v-model="newtable.name" placeholder="請(qǐng)輸入案件名稱(必填)" ></el-input> </div> <div class="Typeofcase"> <p>案件類型 :</p> <el-select v-model="newtable.caseType" placeholder="請(qǐng)選擇案件類型(必填)" class="Typeofcaseselect" > <el-option v-for="item in options" :key="item.code" :label="item.label" :value="item.code" > </el-option> </el-select> </div> <div class="policecategory"> <p>警種 :</p> <el-input v-model="newtable.policeType" placeholder="請(qǐng)輸入警種" ></el-input> </div> <div class="Casedescription"> <p>案件說明 :</p> <el-input type="textarea" :rows="2" placeholder="請(qǐng)輸入案件說明(必填)" v-model="newtable.description" > </el-input> </div> </div> <span slot="footer" class="dialog-footer" style="width: 50%"> <el-button @click="Modifythecase = false">取 消</el-button> <el-button type="primary" @click="Modifycasedescription" >確 定</el-button > </span> </el-dialog> <div class="block" style="margin-top: 30px"> <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageRequestVo.page" :page-sizes="[10, 20, 30, 40]" :page-size="pageRequestVo.size" layout="total, sizes, prev, pager, next, jumper" :total="total" > </el-pagination> </div> </div> </div> </main> </div> </div> </template> <script> export default { data() { return { ruleForm: { name: "", Typeofcase: "", policecategory: "", Casedescription: "", }, search: "", value1: null, Modifythecase: false, ClickaddcaseVisible: false, options: [], textarea: "", totalElements: null, tableData: [], pageRequestVo: { caseId: null, createTimeEnd: null, createTimeStart: null, name: null, page: 1, size: 10, }, newtable: { name: "", caseType: "", policeType: "", options: [], description: "", }, total: 0, }; }, methods: { //跳轉(zhuǎn)畫布 handleJump(index, row) { console.log(index, row); console.log(row.id); this.$router.push({ path: "/CaseQueryCanvas", query: {data:row }, }); }, //點(diǎn)擊案件名稱跳轉(zhuǎn) detailed(row) { console.log(row); // console.log(id); this.$router.push({ path: "/CaseQueryCanvas", query: { data:row }, }); }, created() {}, //方法 mounted() { }, }; </script> <style scope> .timeframe { font-size: 14px; } .shijian { width: 400px !important; } .casesList { height: 500px; } .Casename, .Typeofcase, .policecategory, .Casedescription { margin-bottom: 20px; } .Typeofcaseselect { width: 100%; } .dialog-footer { display: flex; justify-content: space-between; margin: auto; } .block { display: flex; justify-content: flex-end; margin-right: 30px; } .el-pagination.is-background .el-pager li:not(.disabled).active { background: #7e3af2; } .mask-style { width: 70%; margin: 10px auto; } #newcanvas { position: absolute; right: 10px; top: 15px; color: #fff; } .surveyfile { display: flex; align-items: center; margin-left: 20px; } .surveyfile span { display: inline-block; width: 150px; } </style>
接收參數(shù)頁面
<template> <div style="padding: 20px"> <!-- <el-header>Header</el-header> --> <div> <main class="h-full pb-16 overflow-y-auto"> <div class="container grid px-6 mx-auto"> <div style="position: relative"> <a class=" flex items-center justify-between p-4 mb-8 text-sm font-semibold text-purple-100 bg-purple-600 rounded-lg shadow-md focus:outline-none focus:shadow-outline-purple " href="" > <div class="flex items-center"> <svg class="w-5 h-5 mr-2" fill="currentColor" viewBox="0 0 20 20" > <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" ></path> </svg> <span>{{this.$route.query.data.name}}案件畫布列表</span> </div> </a> <span id="newcanvas" @click="newcanvasBtn" >新建畫布 →</span > </div> <div style="display: flex; margin-bottom: 20px"> <p class="surveyfile"> <span>畫布名稱:</span ><el-input placeholder="請(qǐng)輸入內(nèi)容" v-model="pageRequestVo.name" ></el-input> </p> <p class="surveyfile"> <span style="width: 100px">創(chuàng)建時(shí)間:</span> <el-date-picker v-model="datetime" type="datetimerange" range-separator="至" start-placeholder="開始日期" end-placeholder="結(jié)束日期" > </el-date-picker> </p> <el-button type="primary" round style="margin-left: 40px" @click="searchbtn" >搜索</el-button > </div> <div class="w-full overflow-hidden rounded-lg shadow-xs"> <div class="w-full overflow-x-auto"> <el-table :data="tableData" style="width: 100%; cursor: pointer" :header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }" > <el-table-column label="序號(hào)" width="80" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.number }}</span> </template> </el-table-column> <el-table-column label="畫布名稱" align="center"> <template slot-scope="scope"> <div @click="detailed(scope.row.id)" slot="reference" class="name-wrapper" > <el-tag size="medium">{{ scope.row.name }}</el-tag> </div> </template> </el-table-column> <el-table-column label="畫布描述" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.description }}</span> </template> </el-table-column> <el-table-column label="創(chuàng)建日期" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.createTime }}</span> </template> </el-table-column> <el-table-column label="更新時(shí)間" align="center"> <template slot-scope="scope"> <span style="margin-left: 10px">{{ scope.row.modifiedTime }}</span> </template> </el-table-column> <el-table-column label="操作" width="300" align="center"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index, scope.row)" >修改</el-button > <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)" >刪除</el-button > <el-button size="mini" @click="historyBtn(scope.$index, scope.row)" >歷史記錄</el-button > </template> </el-table-column> </el-table> </div> <div class="block" style="margin-top: 30px"> <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageRequestVo.page" :page-sizes="[10, 20, 30, 40]" :page-size="pageRequestVo.size" layout="total, sizes, prev, pager, next, jumper" :total="totalElements" > </el-pagination> </div> <el-dialog title="修改信息" :visible.sync="dialogVisible" width="40%" center > <div class="mask-style"> <p> 畫布名稱:<el-input v-model="editList.name" placeholder="請(qǐng)輸入畫布名稱" style="width: 80%; margin-bottom: 30px" ></el-input> </p> <p> 畫布描述:<el-input v-model="editList.description" placeholder="請(qǐng)輸入畫布描述" style="width: 80%" ></el-input> </p> </div> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="editBtn()">確 定</el-button> </span> </el-dialog> </div> </div> </main> </div> <el-dialog title="新建畫布" :visible.sync="dialogVisible1" width="30%"> <el-input v-model="cnavasname" placeholder="請(qǐng)輸入畫布名稱" style="margin-top: 30px" ></el-input> <el-input v-model="describe" placeholder="請(qǐng)輸入畫布描述" style="margin-top: 30px" ></el-input> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible1 = false">取 消</el-button> <el-button type="primary" @click="submitBtn">確 定</el-button> </span> </el-dialog> <!-- <el-footer>Footer</el-footer> --> </div> </template> <script> import { deleteCanvas, editCanvas, getAddCanvas, getCanvasId, } from "@/apis/operate.js"; import dayjs from "dayjs"; import { CurrentCaseList } from "../../apis/Casemanagement"; export default { components: {}, data() { return { datetime: null, cnavasname: "", describe: "", dialogVisible1: false, totalElements: null, tableData: [], editList: { name: "", description: "", id: "", }, pageRequestVo: { createTimeEnd: null, createTimeStart: null, name: null, page: 1, size: 10, }, dialogVisible: false, }; }, //計(jì)算 computed: {}, //監(jiān)聽 watch: {}, methods: { //案件接收參數(shù) Casereceivingparameters() { //query對(duì)象傳值 console.log(this.$route.query.data); this.pageRequestVo.caseId=parseInt(this.$route.query.data.id) CurrentCaseList(this.pageRequestVo).then((res) => { console.log(res); this.totalElements = res.data.totalElements; //更改時(shí)間 res.data.content.forEach((item) => { item.modifiedTime = dayjs .unix(item.modifiedTime) .format("YYYY-MM-DD HH:mm"); }); //創(chuàng)建日期 res.data.content.forEach((item) => { item.createTime = dayjs .unix(item.createTime) .format("YYYY-MM-DD HH:mm"); }); let number = 1; res.data.content.map((item) => { return (item.number = number++); }); this.tableData = [...res.data.content]; }); }, }, created() { this.Casereceivingparameters(); }, //方法 mounted() {}, }; </script> <style> .block { display: flex; justify-content: flex-end; margin-right: 30px; } .el-pagination.is-background .el-pager li:not(.disabled).active { background: #7e3af2; } .mask-style { width: 70%; margin: 10px auto; } #newcanvas { position: absolute; right: 10px; top: 15px; color: #fff; } .surveyfile { display: flex; align-items: center; margin-left: 20px; } .surveyfile span { display: inline-block; width: 150px; } </style>
vue使用query傳參,解決跳轉(zhuǎn)回退無參數(shù)渲染頁面,無內(nèi)容的方法(不需使用緩存的技術(shù))
? ? ? this.$router.push({ ? ? ? ? name: "goodsDetail", ? ? ? ? query: { ? ? ? ? ? id: id, ? ? ? ? ? goods_type:goods_type ? ? ? ? } ? ? ? });
mounted(){ this.proId = this.$route.query.id;//商品id this.goods_type = this.$route.query.goods_type;//商品類型 }
簡說params和query的區(qū)別
params對(duì)象會(huì)在回退后消失,但是query會(huì)綁在路由后,有路可退
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue translate peoject實(shí)現(xiàn)在線翻譯功能【新手必看】
這篇文章主要介紹了vue translate peoject實(shí)現(xiàn)在線翻譯功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06基于Vue3+ts封裝一個(gè)簡單版的Message組件
近日項(xiàng)目中需要使用信息提示框的功能,ui組件庫使用的是字節(jié)的arco-design-vue,看了一下,現(xiàn)有的Message不滿足要是需求,直接使用message組件的話,改樣式太麻煩,所以本文就本就介紹了基于Vue3+ts封裝一個(gè)簡單版的Message組件,需要的朋友可以參考下2023-09-09Vuex數(shù)據(jù)持久化實(shí)現(xiàn)的思路與代碼
Vuex數(shù)據(jù)持久化可以很好的解決全局狀態(tài)管理,當(dāng)刷新后數(shù)據(jù)會(huì)消失,這是我們不愿意看到的。這篇文章主要給大家介紹了關(guān)于Vuex數(shù)據(jù)持久化實(shí)現(xiàn)的思路與代碼,需要的朋友可以參考下2021-05-05Vue.js中的extend綁定節(jié)點(diǎn)并顯示的方法
在本篇內(nèi)容里小編給大家整理了關(guān)于Vue.js中的extend綁定節(jié)點(diǎn)并顯示的方法以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-06-06Vue3+ElementPlus el-date-picker設(shè)置可選時(shí)間范圍的示例代碼
在Vue3中使用Element Plus的el-date-picker組件設(shè)置可選時(shí)間范圍,你可以使用disabled-date屬性,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-07-07解決vue項(xiàng)目nginx部署到非根目錄下刷新空白的問題
今天小編就為大家分享一篇解決vue項(xiàng)目nginx部署到非根目錄下刷新空白的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09