vue-router新視窗開啟頁面
阿新 • • 發佈:2018-12-17
vue、vue-Router是用來做單頁面應用的,有的時候需要開啟新頁面使用者體驗才好,比如(點選圖片進入放大模式):
這時候開啟新頁面瀏覽這個訂單詳情很明顯比較合適(槓精走開)。
總結了一下,Vue專案使用Vue-router開啟新頁面的時候一共有如下幾種方法,分別適用不同的場景:
1.在template
中,直接給它加上target='_blank'
屬性即可,反正最終它也會被解釋為一個a標籤
<router-link to='./home' target='_blank></router-link>
2.在render
函式中:
2.2也許你會好奇為啥2.2在2.1前面,因為我現在知道正確簡潔的方法了(配置attrs屬性即可)。
//生成一個div包裹起來的router-link標籤,Vue的render方法
render: (h, params) => {
return h('div', [
h('router-link', {
props: {
to: './orderdetail',
},
attrs: {
target: '_blank',
},
}, '訂單詳情')
])
}
2.1當你用ivew的table元件,要用vue的render方法生成表格內容的時候,你會發現在props裡面寫target是沒用的,無論你生成a
標籤或者是生成router-link
//vue的data選項
data(){
return {
//萬惡的iview表格資料來源
columns: [{
title: '操作',
key: 'action',
render: (h, params) => {
return h('div', [
/*這裡生成'a'或者'router-link',在props裡面加上target沒有作用,
所以我選擇生成iview自帶按鈕元件,在其click時間裡面做文章*/
h('Button', {
props: {
type: 'text',
size: 'small'
},
on: {//這裡繫結點選事件模擬超連結的行為
click: () => {
const link = "./orderdetail/" + params.row.orderId;//目標地址
window.open(link, '_blank');//新視窗開啟
}
}
}, '訂單詳情')
])
}
}]
}
}
3.掌握核心思想,想要在新視窗開啟頁面,點選的是什麼標籤並不重要,重要的是給其繫結好事件,利用window.open()
方法,傳入新頁面的地址以及特徵引數_blank
即可完成騷操作。
示例:window.open('http://iscoser.com','_blank')
。
也許隨著Vue和Vue-Router的發展,以後會有更好的方法,2018年9月21日,中秋假期即將到來的最後一個工作日,於我而言,能解決問題讓我準點下班回家的方法就是好方法。是世界上最美好的程式碼實現!