Vue.js重定向到另一个页面


Answers:


187

如果使用vue-router,则应使用router.go(path)导航到任何特定的路线。可以使用组件从组件内部访问路由器this.$router

否则,window.location.href = 'some url';适用于非单页的应用程序的罚款。

编辑router.go()在VueJS 2.0中更改。您可以使用router.push({ name: "yourroutename"})或刚才使用router.push("yourroutename")重定向。

https://router.vuejs.org/guide/essentials/named-routes.html


2
在我的情况下,使用的是定向到另一个非单页页面
Jimmy Obonyo Abor

8
我得到了:Uncaught ReferenceError: router is not defined错误,如何在组件中注入路由器?
萨拉巴

@felipekm什么?那不是同一回事吗?
巴里D.17年

3
router.push(“ yourroutename”)与router.push({name:“ yourroutename”)不同。第一个直接定义路线。第二个采用指定名称的路由。
pinki

8
this.$router.push('routename)
ka_lin

84

根据文档,router.push似乎是首选方法:

要导航到其他URL,请使用router.push。此方法将新条目推入历史记录堆栈,因此,当用户单击浏览器后退按钮时,它们将被带到先前的URL。

来源:https : //router.vuejs.org/en/essentials/navigation.html

仅供参考:Webpack和组件设置,单页应用程序(您通过Main.js导入路由器),我不得不通过以下方式调用路由器功能:

this.$router

示例:如果您希望在满足条件后重定向到名为“ Home”的路由:

this.$router.push('Home') 

1
这个问题与编译(webpack)无关。
Jimmy Obonyo Abor's

12
感谢大家的支持,尽管大多数人都将使用vue cli,webpack,路由器和store / vuex进行开发,并且可能会遇到无法呼叫路由器的问题。
Dave Sottimano

1
@JimmyObonyoAbor hiyo评论na downvote utasema unamlipa哈哈
Cholowao

@Cholowao他,他,sawa tushasikia!如果您有技能,我会有一个反应性的卡兹,请给我
打电话

1
@JimmyObonyoAbor
Cholowao '18

41

只需使用:

window.location.href = "http://siwei.me"

不要使用vue-router,否则您将被重定向到“ http://yoursite.com/#!/http://siwei.me

我的环境:node 6.2.1,vue 1.0.21,Ubuntu。


1
我看不出任何原因,为什么要用双引号..?
莫里茨

1
实际上,standardjs表示“对字符串使用单引号,除非要避免转义”。
莫里茨

这是前一阵子了,但是我实际上我是用单引号来解决的,但是我想双引号也应该起作用,并且在复杂的链接中可能有用。
Jimmy Obonyo Abor

首先检查vue版本。在早期版本中,也许vue不在乎代码约定。但是在我的环境中,代码约定将导致编译错误(从es6编译为vanilla js)。如果您没有使用'ES6'节点模块,也许没问题。
沉思玮申思维思维

如果您想在新标签页上打开该怎么办?
Fthi.a.Abadi




6

如果您想转到另一个页面 this.$router.push({path: '/pagename'})

如果您想使用参数进行路由 this.$router.push({path: '/pagename', param: {param1: 'value1', param2: value2})



3

您也可以将v-bind直接用于模板,例如...

<a :href="'/path-to-route/' + IdVariable">

:是的缩写v-bind


您也可以使用ES6语法::HREF =” `/path-to-route/${IdVariable}`“,或指定的路线如下简称(router.vuejs.org/guide/essentials/named-routes.html): :href="{ name: 'NamedRouteDeclaredAtRouter' , params: { id: idValue } }"
梅内

1

如果有人想从一页永久重定向/a到另一页/b


我们可以使用中redirect:添加的选项router.js。例如,如果我们要在用户键入root或base url时始终将他们重定向到单独的页面/

const router = new Router({
  mode: "history",
  base: process.env.BASE_URL,
  routes: [
    {
      path: "/",
      redirect: "/someOtherPage",
      name: "home",
      component: Home,
      // () =>
      // import(/* webpackChunkName: "home" */ "./views/pageView/home.vue"),

    },
   ]

0
<div id="app">
   <a :href="path" />Link</a>
</div>

<script>
      new Vue({
        el: '#app',
        data: {
          path: 'https://www.google.com/'
        }
      });
</script> enter code here

0

所以,我一直在寻找的不仅是这里window.location.href我得出的结论是,重定向的最佳和最快的方式是在路径(这样,我们不会等待任何负载,我们重定向之前)。

像这样:

routes: [
    {
        path: "/",
        name: "ExampleRoot",
        component: exampleComponent,
        meta: {
            title: "_exampleTitle"
        },
        beforeEnter: () => {
            window.location.href = 'https://www.myurl.io';
        }
    }]

也许会帮助某人..


0

为了符合您的原始要求:

window.location.href = 'some_url'

您可以执行以下操作:

<div @click="this.window.location='some_url'">
</div>

请注意,这没有利用Vue的路由器,但是如果您想“在Vue.js中进行类似于原始javascript的重定向”,则可以使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.