亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue-router go(-1)后退時怎么帶參數?

vue-router go(-1)后退時怎么帶參數?

白豬掌柜的 2018-11-06 13:13:42
找了很多資料,關于router的試用無非是以下兩種://指定跳轉到user頁面,可帶參數router.go({name: 'user', params: {userId: 1}});//不知道頁面名,按歷史記錄跳轉到上一頁(這種情況應該怎么帶參數???)router.go(-1);
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

問題已經解決了! (并非回退操作就不能帶參數,如有需要的參考此類做法)

業務需求

  • 我目前做的是養老服務的互聯網產品,在多個頁面可以進入“醫院列表”頁面,選擇要服務的醫院,然后回退回去。比如“首頁”和“預約”都可以進入“醫院”頁面。

這意味著“醫院列表頁”,并不知道也不需要知道,訪問的上一個頁面是哪個頁面,只需要選擇完醫院之后返回就可以了。
當然也可以通過傳參來告訴醫院列表頁,上一個頁面的name是什么,然后再回退回去。但如果頁面多了,想象一下醫院列表頁的判斷代碼會有多少?

https://img1.sycdn.imooc.com//5c0e13f90001525804770851.jpghttps://img1.sycdn.imooc.com//5c0e14040001e46404770855.jpg

https://img1.sycdn.imooc.com//5c0e14110001eb7f04740854.jpg

解決方案

1. 聲明一個空的Vue模塊eventBus
import Vue from 'vue'/**
 * 定義空的vue實例,作為 eventbus實現非父子組件之間的通信(vue2.x中去掉了broadcast)
 */var eventBus = new Vue({});export default eventBus;
2. “醫院列表頁”通過eventBus.$emit傳參給上一個頁面
import eventBus from '../service/eventbus.js';

methods:{    //列表選中具體醫院的點擊事件
    goback(hospital){        //傳遞一個map,choiceHospital是key,hospital是value
        eventBus.$emit('choiceHospital',hospital);        //調用router回退頁面
        this.$router.go(-1);
    }
}
3. “首頁”以及“預約”頁面接收參數
import eventBus from '../service/eventbus.js';//每次激活時activated(){    //根據key名獲取傳遞回來的參數,data就是map
    eventBus.$on('choiceHospital', function(data){        //賦值給首頁的附近醫院數據模型
        this.nearestOrg = data;
    }.bind(this));
},

參考


查看完整回答
反對 回復 2018-12-10
  • 1 回答
  • 0 關注
  • 9915 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號