vue頁面params傳值的坑及解決
vue頁面params傳值的坑
a.vue向b.vue傳值
a.vue
this.$router.push({ ? ? path: '/payType', ? ? query: { ? ? ? ? putUpList: this.putUpList, ? ? ? ? name:'111' ? ? }, ? ? params:{ ? ? ? ? cartList: this.cartList, ? ? ? ? totalMoney: this.totalMoney ? ? } });
b.vue
mounted:function(){ ? ? console.log(this.$route.params) ? ? console.log(this.$route.query) }
坑來了~
query可以拿到,params拿不到
需要在注冊路由的地方給路由加上name參數(shù)
const router = new VueRouter({ ? ? routes:[{ ? ? ? ? ... ? ? },{ ? ? ? ? path:'/payType', ? ? ? ? name:'inputComp', ? ? ? ? component: payType ? ? }] })
a.vue跳轉(zhuǎn)路由的地方同樣加上name參數(shù),b.vue就可以拿到params了
this.$router.push({ ? ? path: '/payType', ? ? name: 'inputComp', ? ? query: { ? ? ? ? putUpList: this.putUpList, ? ? ? ? name:'111' ? ? }, ? ? params:{//一定要設(shè)置name,才可以傳params ? ? ? ? cartList: this.cartList, ? ? ? ? totalMoney:this.totalMoney ? ? } });
vue跨頁面?zhèn)髦档木?/h2>
眾所周知,以前開發(fā)者只要掌握HTML、CSS、JavaScript 三駕馬車就能勝任一份Web前端的工作。而在技術(shù)日新月異的現(xiàn)在,Vue, React,Angular在代替舊的前端框架已經(jīng)是大勢所趨了。
vue簡介
Vue是一套用于構(gòu)建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設(shè)計為可以自底向上逐層應(yīng)用。Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫結(jié)合使用時,Vue 也完全能夠為復(fù)雜的單頁應(yīng)用提供驅(qū)動。
是一個興起的前端js庫,是一個精簡的MVVM。從技術(shù)角度講,Vue.js 專注于 MVVM 模型的 ViewModel 層。它通過雙向數(shù)據(jù)綁定把 View 層和 Model 層連接了起來,通過對數(shù)據(jù)的操作就可以完成對頁面視圖的渲染。
與ajax比較
vue本身不支持ajax請求,需要借助vue-resource,axios插件。vue2官方推薦axios,是一個基于Promise的HTTP請求客戶端,不再對vue-resource進行維護和更新。
axios([options]) ? axios.get(url[,options]);
傳參方式:
- 通過url傳參
- 通過params選項傳參
axios.post(url,data,[options]);
axios默認(rèn)發(fā)送數(shù)據(jù)時,數(shù)據(jù)格式是Request Payload,并非我們常用的Form Data格式,所以參數(shù)必須要以鍵值對形式傳遞,不能以json形式傳參
傳參方式:
- 自己拼接為鍵值對
- 使用transformRequest,在請求發(fā)送前將請求數(shù)據(jù)進行轉(zhuǎn)換
- 如果使用模塊化開發(fā),可以使用qs模塊進行轉(zhuǎn)換
axios本身并不支持發(fā)送跨域的請求,沒有提供相應(yīng)的API,作者也暫沒計劃在axios添加支持發(fā)送跨域請求,所以只能使用第三方庫
ajax傳參格式
ajax是jquery封裝的一個前端方法,通過請求后臺API接口方式,用以局部刷新和動態(tài)展示頁面。
$.ajax({ url: "http://localhost:8082/boot/request/parameter", type: "post", contentType: "application/json;charset=utf-8", data: JSON.stringify({name: "aaa", foo: ["bar1", "bar2"]}), success: function (json) { console.log(json); } });
vue傳參格式
場景:點擊父頁面的XX查詢按鈕,彈出子頁面queryView,父頁面選中的某行記錄值傳到子頁面中,子頁面請求后臺Api關(guān)聯(lián)查詢并展示父頁面選中記錄對應(yīng)的明細(xì)記錄。
- 在父頁面定義方法query()
- const rows為父頁面查詢列表選中的某行記錄
- queryView為子頁面
- params 為定義的傳值對象
- callback 回調(diào)方法
query() { let title = "XX查詢" const rows = this.$refs.multipleTable.selection; this.$dialog.modal(queryView, { title: title, width: 1200, height: 600, params: {domain: Object.assign({}, rows[0])}, callback: data=> { if(data.flag == true) this.queryData() } }); }
子頁面中定義接收參數(shù)對象,接收參數(shù)對象有3種格式:變量、對象、常量
這里定義為對象 Object
props:{ domain: { type: Object, default: function() {} } }
調(diào)用后臺api接口關(guān)聯(lián)查詢并展示
- params 定義方法中變量,獲取從父頁面接收的對象中的屬性值
- this.operat4Data(XXApi.getList, params, null, null); 調(diào)用后臺api接口及傳參
queryData() { let params = {apiParams:this.domain.apiParams}; let respData = this.operat4Data(XXApi.getList, params, null, null); respData.then( data => { this.dataList = data.posts; this.total = data.count; }); }
vue的優(yōu)勢
vue因其極具方便靈活易用等特性,為廣大前端開發(fā)者所推崇和使用。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序
本文主要介紹了vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Vue3中實現(xiàn)網(wǎng)頁時鐘功能(顯示當(dāng)前時間并每秒更新一次)
本文將詳細(xì)介紹如何在Vue3中實現(xiàn)一個每秒鐘自動更新的網(wǎng)頁時鐘,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-07-07vue項目實現(xiàn)記住密碼到cookie功能示例(附源碼)
本篇文章主要介紹了vue項目實現(xiàn)記住密碼到cookie功能示例(附源碼),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01antd實現(xiàn)table組件選中單行換樣式(比如背景顏色)
這篇文章主要介紹了antd實現(xiàn)table組件選中單行換樣式(比如背景顏色),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03