vue编程式路由实现新窗口打开

本文介绍了Vue中使用<router-link>标签实现在新窗口打开页面的方法,并提供了编程式导航实现新窗口打开的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. <router-link>标签实现新窗口打开:

官方文档中说 v-link 指令被 <router-link> 组件指令替代,且 <router-link> 不支持 target="_blank" 属性,如果需要打开一个新窗口必须要用<a>标签,但事实上vue2版本的 <router-link> 是支持  target="_blank" 属性的(tag="a"),示例如下:

<router-link tag="a" target="_blank" :to="{name:'searchGoods',params:{catId:0},query:{keywords:'手机'}}">热门好货</router-link>

注:只有tag="a"模式下  target="_blank" 属性才会生效。

二. 编程式导航:

有些时候需要在单击事件或者在函数中实现页面跳转,那么可以借助router的示例方法,通过编写代码实现。我们常用的是 $router.push 和 $router.go ,但是vue2.0以后,这种方式就不支持新窗口打开的属性了。这两种平常用的都比较多,这里就不再赘述。百度了下,找到了使用 $router.resolve 这种方法能够实现新窗口打开,示例代码如下:

let routeData = this.$router.resolve({
   name: "searchGoods",
   query: params,
   params:{catId:params.catId}
});
window.open(routeData.href, '_blank');

转载于:https://www.cnblogs.com/xiaoweiba/p/8761913.html

### Vue3 中配置路由实现新窗口打开链接的方法 在 Vue3 项目中,为了实现点击某个链接或按钮时,在新的浏览器标签页中打开目标页面的功能,可以采用编程式导航方式来处理。具体来说,`$router.resolve()` 方法提供了一种有效的解决方案[^2]。 #### 使用 `$router.resolve()` 结合 `window.open` 这种方法允许开发者创建一个虚拟的路由对象,并从中获取到完整的 URL 地址,之后利用 JavaScript 的原生 API `window.open()` 来触发新窗口/标签页的加载过程: ```javascript // 假设当前组件内定义了一个名为 linkTo 的方法用于执行跳转逻辑 methods: { linkTo(){ const query = { id : "Fate" }; // 解析路径得到包含 href 属性的对象 const routeData = this.$router.resolve({ name: 'searchGoods', query, }); // 在新窗口打开解析后的URL地址 window.open(routeData.href, '_blank'); } } ``` 此段代码展示了如何在一个 Vue 组件内部封装一个自定义的方法来进行跨页面的新窗口跳转操作。其中的关键在于调用了路由器实例上的 `.resolve()` 函数,它接受相同的参数形式作为常规的路由匹配规则(比如名字、查询字符串等),最终返回的结果里包含了可用于构建绝对路径的信息——即这里的 `href` 字段[^3]。 另外需要注意的是,虽然 `<router-link>` 标签默认情况下不支持直接设置 `target="_blank"` 属性来指定外部链接的行为,但在某些场景下仍然可以通过将其渲染成普通的 HTML 锚点 (`<a>`) 并附加相应的属性值来达到相同的效果。不过对于更复杂的业务需求而言,推荐使用上述基于 JavaScript 编程的方式去控制具体的跳转行为[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值