Vue2:如何使用路由重定向到另一个页面
Vue2: How to redirect to another page using routes
如何从我的脚本代码重定向到另一个 vue 页面。我正在使用 router.push() 但无法重定向到我想要的 vue 页面。
以下是我的源代码。
src/router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import HomePage from '@/components/HomePage'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'IndexPage',
component: IndexPage
},
{
path: '/homepage',
name: 'HomePage',
component: HomePage
}
]
})
src/components/IndexPage.vue
<script>
import VueRouter from 'vue-router'
export default {
name: 'IndexPage',
methods: {
redirectUser() { // this method is called on button click
if (1 == 1)
{
router.push('/homepage');
//this.$router.push('/homepage');
}
}
}
}
</script>
在 运行 这段代码之后,我收到错误消息:
ReferenceError: router is not defined at eval
src/main.js
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = false
window.Vue = Vue
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
此外,我可以从浏览器 http://localhost:8080/#/homepage 访问相同的 link。但是无法从我的脚本代码重定向到它。
使用您的组件实例属性访问路由器:
this.$router.push({name: 'HomePage'})
你的应用程序中有它吗?
new Vue({
router,
render: h => h(App)
}).$mount('#app')
您可以试试下面的代码:
function redirect(page) {
window.location.href = page;
}
导入 Vue 和 VueRouter
然后调用
Vue.use(VueRouter)
那么在你的方法中,
this.$router.push({name: 'HomePage'})
编辑
如果你想在代码中使用 Vue 和 Vue Router,你需要同时导入它,这就是为什么你会得到 router is not defined at eval。
并且还使用
this.$router.push('/homepage');
在你的 src/components/IndexPage.vue
中试试这个
<script>
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
export default {
name: 'IndexPage',
methods: {
redirectUser() { // this method is called on button click
if (1 == 1)
{
this.$router.push('/homepage');
}
}
}
}
</script>
感谢反馈的朋友。我没有在我的 vue 上导入我的路由器文件。更新后的代码行是:
src/components/IndexPage.vue
<script>
import router from '../router/index.js' // Just added this line and code works !!
export default {
name: 'IndexPage',
methods: {
redirectUser() { // this method is called on button click
if (1 == 1)
{
router.push({name: 'HomePage'})
}
}
}
}
</script>
如何从我的脚本代码重定向到另一个 vue 页面。我正在使用 router.push() 但无法重定向到我想要的 vue 页面。
以下是我的源代码。
src/router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import HomePage from '@/components/HomePage'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'IndexPage',
component: IndexPage
},
{
path: '/homepage',
name: 'HomePage',
component: HomePage
}
]
})
src/components/IndexPage.vue
<script>
import VueRouter from 'vue-router'
export default {
name: 'IndexPage',
methods: {
redirectUser() { // this method is called on button click
if (1 == 1)
{
router.push('/homepage');
//this.$router.push('/homepage');
}
}
}
}
</script>
在 运行 这段代码之后,我收到错误消息:
ReferenceError: router is not defined at eval
src/main.js
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = false
window.Vue = Vue
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
此外,我可以从浏览器 http://localhost:8080/#/homepage 访问相同的 link。但是无法从我的脚本代码重定向到它。
使用您的组件实例属性访问路由器:
this.$router.push({name: 'HomePage'})
你的应用程序中有它吗?
new Vue({
router,
render: h => h(App)
}).$mount('#app')
您可以试试下面的代码:
function redirect(page) {
window.location.href = page;
}
导入 Vue 和 VueRouter 然后调用
Vue.use(VueRouter)
那么在你的方法中,
this.$router.push({name: 'HomePage'})
编辑
如果你想在代码中使用 Vue 和 Vue Router,你需要同时导入它,这就是为什么你会得到 router is not defined at eval。 并且还使用
this.$router.push('/homepage');
在你的 src/components/IndexPage.vue
中试试这个<script>
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
export default {
name: 'IndexPage',
methods: {
redirectUser() { // this method is called on button click
if (1 == 1)
{
this.$router.push('/homepage');
}
}
}
}
</script>
感谢反馈的朋友。我没有在我的 vue 上导入我的路由器文件。更新后的代码行是:
src/components/IndexPage.vue
<script>
import router from '../router/index.js' // Just added this line and code works !!
export default {
name: 'IndexPage',
methods: {
redirectUser() { // this method is called on button click
if (1 == 1)
{
router.push({name: 'HomePage'})
}
}
}
}
</script>