vue 跳转页面并且传值以及在新窗口打开页面的方法
1、建一个跳转页面demo.vue

<template>
  <el-row>
    <p>跳转界面1</p>
    <el-button style="float: left" type="primary" @click="show3">跳转回主页</el-button>
  </el-row>
</template>

<script>
  export default {
    name: 'demo',
    methods : {
      show3(){
        this.$router.push({ path:"/"})
      },
    }
  }
</script>

主界面:

<template>
  <div class="hello">
    <el-row style="margin-left: 10%">
      <el-button style="float: left" type="primary" @click="show1">查询</el-button>
      <el-button style="float: left" type="primary" @click="show3">跳转</el-button>
      <el-button @click="toDemo">
        新页面打开demo页
      </el-button>
      <router-link target="_blank" :to="{name:'demo',params:{id:78}}">
        新页面打开demo页1
      </router-link>
    </el-row>
  </div>
</template>

<script>
  import ElButton from "../../node_modules/element-ui/packages/button/src/button.vue";
  import ElInput from "../../node_modules/element-ui/packages/input/src/input.vue";
  export default {

    components: {
      ElInput,
      ElButton
    },
    name: 'HelloWorld',
  data() {
    return {
      tableData:[],
      city:"",
    };
  },
  methods: {
    toDemo () {
      this.$router.push({ name:"demo",params:{id:78}})
    },
    show3(){
      this.$router.push({ path:"/demo"})
    },
  }
</script>

2、在ruoter的index.js注册路由

import Vue from 'vue'
import Router from 'vue-router'
import demo from '@/components/demo'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/demo',
      name: 'demo',
      component: demo
    },
  ]
})

3、在main.js引入router

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  render: h => h(App)
})

其他:

跳转页面并且是新窗口打开

<router-link target="_blank" :to="{path:'/demo',query:{id:78}}">
  新页面打开demo页
</router-link>
<router-link target="_blank" :to="{name:'demo',params:{id:78}}">
  新页面打开demo页1
</router-link>



有些时候需要在单击事件或者在函数中实现页面跳转,那么可以借助router的示例方法,通过编写代码实现。我们常用的是router.push 和router.go 但是vue2.0以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用this.$router.resolve,如下:

```javascript
<el-button @click="toDemo">
  新页面打开demo页
</el-button>

toDemo () {
  //这是第二种
  let routeUrl = this.$router.resolve({
    path: "/demo",
    query: {id:78}
  });
  let routeUrl1 = this.$router.resolve({
    name: "demo",
    params:{id:78}
  });
  window.open(routeUrl.href, '_self');

  //获取到值
  // console.log(this.$route.query.id);
 //  console.log(this.$route.params.id);
},

仅跳页面的话用router.push和router.go 就好了

toDemo () {
  this.$router.push({ name:"demo",params:{id:78}})
  //   this.$router.push({ path:"/demo",params:{id:78}})
},

在demo界面获取带过来的参数
mounted () {
  console.log(this.$route.params.id);
}
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐