vue | 路由vue-router在新窗口打開頁面

vue的是單頁面應(yīng)用設(shè)計的漸進(jìn)式框架,但是有時在項目中也會出現(xiàn)新窗口打開頁面的情況,此時,就需要vue-router的知識來解決

一.使用<router-link>標(biāo)簽

需要注意的是,router-link并不支持 target="_blank" 屬性,所以需要tag="a"屬性把router-link渲染成<a>標(biāo)簽

<router-link tag="a" target="_blank" :to="{name:'List',query:{id: 'val'}}">詳情頁</router-link>

二.使用編程式導(dǎo)航

有些時候需要在單擊事件或者在函數(shù)中實現(xiàn)頁面跳轉(zhuǎn),那么可以借助router的示例方法,通過編寫代碼實現(xiàn)。我們常用的是router.push和router.go,但是vue2.0以后,這種方式就不支持新窗口打開的屬性了,

1.使用 $router.resolve 這種方法能夠?qū)崿F(xiàn)新窗口打開, isService是事件調(diào)用

isService(val) {
  const params = { id: val };
  let routeData = this.$router.resolve({
     name: "List",
     query: params,
  });
  window.open(routeData.href, '_blank');
}

2.使用 $router.resolve帶參數(shù)在新窗口打開

isService(val) {
      const params = { id: val };
      let routeData = this.$router.resolve({
        path: `/details/${val}`,
        query: params
      });
      window.open(routeData.location.path, "_blank");
    }

新窗口的接收參數(shù)方法

created() {
    if (this.$route.params) {
      this.active = this.$route.params.id;
      this.init();
    }
  },
  watch: {
    $route(to, from) {
      //監(jiān)聽路由是否變化
      if (to.params.id != from.params.id) {
        this.active = to.params.id;
        this.init();//重新加載數(shù)據(jù)
      }
    }
  },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容