2017-07-25 110 views
0

我是vue現在使用其路由器的新手。 我想導航到另一個頁面,我使用下面的代碼:如何使用vue-router params

this.$router.push({path: '/newLocation', params: { foo: "bar"}}); 

然後,我希望它是在新的組件

this.$route.params 

這是行不通的。 我也試過:

this.$router.push({path: '/newLocation'}); 
this.$router.push({params: { foo: "bar"}}); 

我檢查源代碼了一下,注意到了這個屬性,都會有新的對象覆蓋{}。

我想知道的是params使用是不是我認爲? 如果沒有,如何使用它?

在此先感謝

回答

0

是不是很普遍認爲結合特性的路由器的反模式?

這是一個更乾的解決方案,讓他們綁定到它自己的組件,我真的相信Vue路由器。請參閱:https://router.vuejs.org/en/essentials/passing-props.html有關此處最佳做法的更多信息

您是否可以嘗試接受組件的props屬性:[]屬性?你可以看到如何做到這一點:https://vuejs.org/v2/guide/components.html#Props

如果您有任何問題,請不要彈出!樂意進一步幫助。

+0

我想通過PARAMS表格視圖之間。聽起來對我好。當給路由一個名字然後執行'this。$ router.push({path:'/ newLocation',name:'newRouteName',params:{foo:「bar」}});'做了訣竅,現在我可以通過以下方式訪問我的新加載視圖上的參數:this。$ route.params。感謝您的時間和精力! –

+0

還有一件事,我不明白爲什麼它必須命名它的工作。你有好主意嗎? –

0

既然你想傳遞PARAMS到你的路由對象的路徑屬性應該有:然後在你的params對象鍵的名字表示的動態段各路線的組成部分

所以你的路線應和

routes: [ 
    {path: '/newLocation/:foo', name: 'newLocation', component: newComponent} 
] 

那麼對於導航程式設計的組件,你應該做的:

this.$router.push({name: 'newLocation', params: { foo: "bar"}}); 

請參閱我正在使用name而不是path,因爲您正在通過屬性params傳遞參數。

如果wamt使用path那麼就應該是:

this.$router.push({path: '/newLocation/bar'}); 

由路徑接近PARAMS會自動映射到相應的字段上$route.params。現在

如果你console.log(this.$route.params)在新的組件,你會得到對象:{"foo": "bar"}