vue-router实现组件间的跳转(参数传递)


Posted in Javascript onNovember 07, 2017

通过VueRouter来实现组件之间的跳转:参数的传递,具体内容如下

login ---用户名--->main

①明确发送方和接收方

②配置接收方的路由地址
{path:'/myTest',component:TestComponent}
-->
{path:'/myTest/:id',component:TestComponent}

③接收方获取传递来的数据
this.$route.params.id

④跳转的时候,发送参数
this.$router.push('/myTest/20')
<router-link :to="'/myTest'+id">跳转</router-link>

代码:

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>传参</title>
 <script src="js/vue.js"></script>
 <script src="js/vue-router.js"></script>
 </head>
 <body>
 <div id="container">
  <p>{{msg}}</p>
  <!--指定容器 -->
  <router-view></router-view>
 </div>
 <script>
 //创建主页面组件
  var myMain = Vue.component("main-component",{
   //保存登录传递过来的数据
   data:function(){
  return {
   uName:''
  }
  },
   template:`
    <div>
     <h1>主页面用户名:{{uName}}</h1>
    </div>
   `,
   //挂载该组件时自动拿到数据
   beforeMount:function(){
    //接收参数
    console.log(this.$route.params);
    this.uName = this.$route.params.myName ;
   }
  })
  //创建登录页面组件
  var myLogin = Vue.component("login-component",{
   //保存用户输入的数据
   data:function(){
    return {
     userInput:""
    }
   },
   methods:{
    toMain:function(){
     //跳转到主页面,并将用户输入的名字发送过去
     this.$router.push("/main/"+this.userInput);
     console.log(this.userInput);
    }
   },
   template:`
    <div>
     <h1>登录页面</h1>
     <input type="text" v-model="userInput" placeholder="请输入用户名">
     <button @click="toMain">登录到主页面</button>
     <br>
     <router-link :to="'/main/'+userInput">登录到主页面</router-link>
    </div>
   `
  })
  var NotFound = Vue.component("not-found",{
   template:`
    <div>
     <h1>404 Page Not Found</h1>
     <router-link to="/login">返回登录页</router-link>
    </div>
   `
  })
  //配置路由词典
  const myRoutes = [
   {path:"",component:myLogin},
   {path:"/login",component:myLogin},
    //注意冒号,不用/否则会当成地址
   {path:"/main/:myName",component:myMain},
   //没有匹配到任何页面则跳转到notfound页面
   {path:"*",component:NotFound}
  ]
  const myRouter = new VueRouter({
   routes:myRoutes
  })
  new Vue({
   router:myRouter,
   el:"#container",
   data:{
    msg:"Hello VueJs"
   }
  })
// 注意,路由地址
 </script>
 </body>
</html>
<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>传参练习</title>
 <script src="js/vue.js"></script>
 <script src="js/vue-router.js"></script>
 </head>
 <body>
 <div id="container">
  <p>{{msg}}</p>
<!-- -->
  <router-view></router-view>
 </div>
 <script>
//创建产品列表组件
  var myList = Vue.component("product-list",{
   //保存产品列表的数据
   data:function(){
    return{
     productList:["苹果","华为","三星","小米","vivo"]
    }
   },
   template:`
    <div>
     <h4>这是列表页</h4>
     <ul>
      <li v-for="(tmp,index) in productList">
      //将index传递过去
       <router-link v-bind:to="'/detail/'+index">{{tmp}}</router-link>
      </li>
     </ul>
    </div>
   `
  })
//详情页组件 
  var myDetail = Vue.component("product-detail",{
   //保存传递过来的index
   data:function(){
    return{
     myIndex:""
    }
   },
   //在挂载完成后,将接收到的index赋值给myIndex
   mounted:function(){
     this.myIndex = this.$route.params.id;
   },
   template:`
    <div>
     <h4>这是详情页</h4>
     <p>这是id为:{{myIndex}}的产品</p>
    </div>
   `
  })
//页面找不到的时候
  var NotFound = Vue.component("not-found",{
   template:`
    <div>
     <h1>404 Page Not Found</h1>
    </div>
   `
  })
// 配置路由词典
  const myRoutes = [
   {path:"",component:myList},
   {path:"/list",component:myList},
   {path:"/detail/:id",component:myDetail},
   {path:"*",component:NotFound},
  ]
  const myRouter = new VueRouter({
   routes:myRoutes
  })
  new Vue({
   router:myRouter,
   el:"#container",
   data:{
    msg:"Hello VueJs"
   }
  })
 </script>
 </body>
</html>

关于vue.js的学习教程,请大家点击专题vue.js组件学习教程、Vue.js前端组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript While 循环基础教程
Apr 05 Javascript
jquery 操作DOM案例代码分享
Apr 05 Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 Javascript
JS中表单的使用小结
Jan 11 Javascript
jQuery绑定事件不执行但alert后可以正常执行
Jun 03 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
javascript实现简单的进度条
Jul 02 Javascript
学习JavaScript设计模式之享元模式
Jan 18 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
vue实现分页加载效果
Dec 24 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 #Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 #Javascript
vue 运用mock数据的示例代码
Nov 07 #Javascript
vue环境搭建简单教程
Nov 07 #Javascript
用Webpack构建Vue项目的实践
Nov 07 #Javascript
vue双花括号的使用方法 附练习题
Nov 07 #Javascript
vue组件生命周期详解
Nov 07 #Javascript
You might like
PHP 缓存实现代码及详细注释
2010/05/16 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
PHP new static 和 new self详解
2017/02/19 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python 线程的五个状态
2020/09/22 Python
python破解同事的压缩包密码
2020/10/14 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
新闻专业应届生求职信
2013/10/31 职场文书
离婚答辩状范文
2015/05/22 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android