1. <router-link>標(biāo)簽實(shí)現(xiàn)新窗口打開:
官方文檔中說 v-link 指令被 <router-link> 組件指令替代诊县,且 <router-link> 不支持 target="_blank" 屬性,如果需要打開一個新窗口必須要用<a>標(biāo)簽焰望,但事實(shí)上vue2版本的 <router-link> 是支持 target="_blank" 屬性的(tag="a")陨帆,如下:
<router-link target="_blank" :to="{path:'/home',query:{id:'1'}}">新頁面打開home頁</router-link>
2曲秉、編程式導(dǎo)航:
有些時(shí)候需要在單擊事件或者在函數(shù)中實(shí)現(xiàn)頁面跳轉(zhuǎn),那么可以借助router的示例方法疲牵,通過編寫代碼實(shí)現(xiàn)岸浑。我們常用的是
$router.push
$router.go
但是vue2.0以后,這種方式就不支持新窗口打開的屬性了瑰步,這個時(shí)候就需要使用this.$router.resolve,如下
seeShare(){
let routeUrl = this.$router.resolve({
path: "/share",
query: {id:96}
});
window.open(routeUrl .href, '_blank');
}
返回上一頁:
1矢洲,點(diǎn)擊返回上一頁
<button @click="goback">goback</button>
methods:{
goback(){}
this.$router.go(-1)
}
這里傳參可以使用query,也可以使用params缩焦,
query跟params的區(qū)別:
/data/:id這個路由匹配/data/1,/data/2這里的 id 叫 params
/data?id=1 /data?id=2 這里的 id 叫 query
當(dāng)你使用params方法傳參的時(shí)候读虏,要在路由后面加參數(shù)名责静,并且傳參的時(shí)候,參數(shù)名要跟路由后面設(shè)置的參數(shù)名對應(yīng)盖桥。使用query方法灾螃,就沒有這種限制,直接在跳轉(zhuǎn)里面用就可以揩徊。
這句話怎么理解呢腰鬼?看下邊:
如果你要使用params傳參,那么你的路由頁面index.js必須帶上參數(shù)塑荒,如下
{
path: '/detail/:id/',
name: "detail",
component: detail//這個details是傳進(jìn)來的組件名稱
}
使用:
方法1:<router-link :to="{ name: 'details', params: { id: 123 }}">點(diǎn)擊按鈕</router-link>
方法2:this.$router.push({name:'details',params:{id:123}})
頁面url顯示結(jié)果是:http://localhost:8081/#/details/123
如果你要使用query傳參熄赡,那么你的路由頁面index.js不用帶上參數(shù),如下
{
path: '/detail',//這里不需要參入?yún)?shù)齿税,參見上面的params寫法
name: "detail",
component: detail//這個details是傳進(jìn)來的組件名稱
}
使用:
方法1:<router-link :to="{ name: 'details', query: { id: 123 }}">點(diǎn)擊按鈕</router-link>
方法2:this.$router.push({name:'details',query:{id:123}})
方法3:<router-link :to="{ path: 'details', query: { id: 123 }}">點(diǎn)擊按鈕</router-link>
方法4:this.$router.push({path:'details',query:{id:123}})
頁面url顯示結(jié)果是:http://localhost:8081/#/details?id=123
這里看方法3,4,其實(shí)是對應(yīng)方法1,2的彼硫,也就是說使用query方法,可以與path和name共用凌箕,2個都可以拧篮,但是params只能對應(yīng)name。
要是想獲取參數(shù)值:各自的獲取方法是:
query:this.$route.query.id牵舱,
params:this.$route.params.id,
順便說一些參數(shù)是多個的情況:
{
path: '/detail/:id/:name',
name: "detail",
component: detail//這個details是傳進(jìn)來的組件名稱
}
那么跳轉(zhuǎn)寫法:this.$router.push({name:'detail',params:{id:123,name:'lisi'}})
query的寫法參考上面串绩。
query跟params,前者在瀏覽器地址欄中顯示參數(shù)芜壁,后者則不顯示赏参。