this.$router.push()跳转路由,前面拼接的是什么?

今天突然想到一个问题,平时路由跳转页面,我都是直接用this.$router.push()方法,
比如要调到首页,就直接this.$router.push({'path':'/home'})
跳转之后完整的页面就是:
域名 + url参数 + 路由
我的项目就是
http://xxxx.com?Data=xxxx&token=xxxx&id=xxx?nextAction= #/home

问题1:
我就想知道,http://xxxx.com?Data=xxxx&token=xxxx&id=xxx?nextAction= 这段是怎么拼接上去的?

问题2:
如果我想嵌套 一个链接打开新的页面,
使用iframe或者window.open,
Data和token还会带过去吗?

有没有大佬帮小白解答下T-T~!!! 非常感谢

阅读 6.1k
4 个回答

不能用laction,用lcation刷新,页面上点击的其他菜单就都没有了

params: { id: row.parentBillNo }
用路由后,不能使用?问号的方式传参数.这是vue组件之间的跳转,不是html之间跳转.

1.跳转之后完整的页面就是:域名 + 路由 + url参数
2.你问题1 就是路由传参一共两种方式

1、
    this.$router.push({
        path: "path",
        query:{
            // 就是你路径后的键值对
            data: xxx,
            token: xxx,
            id: xxx
            ....
        }
    });
2、get请求方式传参
  1. 问题2,直接用一个a标签链出去也行吧

第1个问题:
不知道怎么拼的,得看源码吧,我没研究过。

第2个问题:

用window.open()打开一个新页面,Data和token不会带过去,需要拼接到路径上

window.open(`https://${address}?data=${data}$token=${token}`);

在新页面中获取参数:

let afterUrl =  window.location.search.substring(1);//(问号以后的字符串)
let paramsArray = afterUrl.split('&');
let paramsObj = {};
for (let i = 0; i <paramsArray.length; i++) {
    let arr = paramsArray[i].split("=");
    let key = arr[0];
    let value = arr[1];
    paramsObj[key] = value;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题