私は学習していますVueルーター。そして、プログラムナビゲーション(<router-link>
なし)を作りたいです。ルーターとビュー:
router = new VueRouter({
routes: [
{path : '/videos', name: 'allVideos', component: Videos },
{path : '/videos/:id/edit', name: 'editVideo', component: VideoEdit },
]
});
new Vue({
el: "#app",
router,
created: function(){
if(!localStorage.hasOwnProperty('auth_token')) {
window.location.replace('/account/login');
}
router.Push({ name: 'allVideos' })
}
})
したがって、デフォルトでは「allVideos」ルートにプッシュし、そのコンポーネント内に「editVideo」ボタンにリダイレクトするためのボタンとメソッドがあります:
<button class="btn btn-sm btn-warning" @click="editVideo(video)">Edit</button>
方法:
editVideo(video) {router.Push({ name: 'editVideo', params: { id: video.id } })},
正常に動作します。しかし、$route.params.id
を使用してVideoEditコンポーネント内でidを取得しようとすると、エラーが発生しましたncaught ReferenceError:$ route is not defined
たぶん、今のところnpmをVueとVuerouter。のcdnバージョンだけを使っているわけではありません。解決策はありますか?ありがとう!
更新: btw in Vue dev toolコンポーネント内に$ routeインスタンスが表示されます
更新:
var VideoEdit = Vue.component('VideoEdit', {
template: ` <div class="panel-heading">
<h3 class="panel-title">Edit {{vieo.name}}</h3>
</div>`,
data() {
return {
error: '',
video: {},
}
},
created: function () {
console.log($route.params.id);
},
})
Sandeep Rajoria に感謝
ソリューションを見つけました。コンポーネント内でthis.$route
を除く$route
を使用する必要があります
import Vue from 'vue'
import Router from 'vue-router';
Vue.use(Router)
const router = new VueRouter({
routes: [
{path : '/videos', name: 'allVideos', component: Videos },
{path : '/videos/:id/edit', name: 'editVideo', component: VideoEdit },
]
});
new Vue({
el: "#app",
router,
created: function(){
if(!localStorage.hasOwnProperty('auth_token')) {
window.location.replace('/account/login');
}
this.$router.Push({ name: 'allVideos' });
}
})
私の場合、これらの以前のソリューションは私のために機能しないので、私は次のことをしました
_<script> import Router from '../router';
_
あなたのコードでこれを使用できます
this.$router.Push('/contacts');
this
を追加した後にエラーが発生する場合
TypeError: Cannot read property '$route' of undefined
ES6矢印関数の代わりに通常関数を使用する必要があります
data: function() {
return {
usertype: this.$route.params.type
};
},
これは私のために働いた。
vue v2&vue-router v2を使用している場合、コンポーネントからルーターにアクセスするためのvue-cli生成ボイラープレート方法では、ルーターをインポートします(router/index.jsにエクスポートされます)
<script>
import Router from '../router';
コードでは、次のようなルーター機能を使用できます。
Router.Push('/contacts'); // go to contacts page