找了很多資料,關於router的試用無非是以下兩種:
//指定跳转到user页面,可带参数
router.go({name: 'user', params: {userId: 1}});
//不知道页面名,按历史记录跳转到上一页(这种情况应该怎么带参数???)
router.go(-1);
黄舟2017-05-19 10:31:50
問題已經解決了! (並非回退操作就不能帶參數,如有需要的參考此類做法)
我目前做的是養老服務的網路產品,在多個頁面可以進入「醫院清單」頁面,選擇要服務的醫院,然後回退回去。例如「首頁」和「預約」都可以進入「醫院」頁面。
這意味著“醫院列表頁”,並不知道也不需要知道,訪問的上一個頁面是哪個頁面,只需要選擇完醫院之後返回就可以了。
當然也可以透過傳參來告訴醫院列表頁,上一個頁面的name是什麼,然後再回退回去。但如果頁面多了,想像一下醫院列表頁的判斷代碼會有多少?
eventBus
import Vue from 'vue'
/**
* 定义空的vue实例,作为 eventbus实现非父子组件之间的通信(vue2.x中去掉了broadcast)
*/
var eventBus = new Vue({});
export default eventBus;
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);
}
}
import eventBus from '../service/eventbus.js';
//每次激活时
activated(){
//根据key名获取传递回来的参数,data就是map
eventBus.$on('choiceHospital', function(data){
//赋值给首页的附近医院数据模型
this.nearestOrg = data;
}.bind(this));
},
vue非父子組件怎麼通訊
仅有的幸福2017-05-19 10:31:50
官網grouter.go(-1) // 後退一步記錄,等同於history.back() 是無法帶參數的
2個解決方法: 1. 以路由方式跳到上一個頁面,而非返回2.可以透過store或vuex,實現資料共享。