【发布时间】:2017-10-02 04:41:40
【问题描述】:
我无法从嵌套视图访问路由对象。这是简化的代码:
main.js
import Vuetify from 'vuetify'
import VueRouter from 'vue-router'
import Vuetify from 'vuetify'
Vue.use(VueRouter)
Vue.use(Vuetify)
const router = new VueRouter({
routes : [
{path : '/contacts', component: Contacts,
children: [
{
path: ':id',
component: ContactDetails
}
]
},
],
mode: 'history'
})
new Vue({
el: '#app',
render: h => h(App),
router
})
ContactDetails.vue
<template>
<v-btn icon dark class="mr-3" @click.native="editContact">
<v-icon>edit</v-icon>
</v-btn>
</template>
<script>
export default {
data : () => ({
}),
methods: {
editContact: ()=>{
console.log('edit contact');
this.$router.go(-1) //this gives an error
}
},
}
</script>
当我使用时,它说“路由器未定义”
this.$router.go(-1)
从主要路线(又名 /contacts),它可以工作。我在孩子身上尝试了以下所有代码:
router.go(-1)
$router.go(-1)
this.$router.go(-1)
this.router.go(-1)
this.$parent.$router.go(-1)
它们都不起作用。有没有办法从嵌套路由到达路由器对象?还是应该向父级发出事件并从那里更改视图?
【问题讨论】:
-
您不需要发出事件,您的子组件可以默认访问您的路由器实例。你能告诉我们
Contacts组件代码吗?
标签: javascript vuejs2 vue-router