眾所周知,vue是單頁面應用,那么如果我們碰到的需求是需要打開一個新的窗口呢
很明顯,this.$router.push()和router-link是不行的,他們不會打開一個新的窗口
- 上代碼
toNewPage(id) {
let deviceId = id //必要的參數(shù)
let routeData = this.$router.resolve({
name: 'Equipment',//需要打開的路由名稱
query: {
deviceId: JSON.stringify(deviceId)//需要攜帶的參數(shù)
}
})
window.open(routeData.href, '_blank');
},
可能遇到的問題
- 上線訪問不到
打開新的窗口可以看到href會默認加一層/static的路徑,這樣導致打包后線上環(huán)境找不到所訪問的地址(http404)。解決方法:我通過window.location來取路徑,這個路徑是不變的。因為我需要拼接參數(shù),所以我先截取了一下地址,實例如下:
let sfAddress= _.split(window.location.href, '?', 2);
let presAdress=sfAddress[0]+`?index=${index}&status=${hisPres.audit_status}`;
window.open(presAdress, '_blank')
2.不要使用params傳參