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 相关文章推荐
读jQuery之一(对象的组成)
Jun 11 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
详解JS函数重载
Dec 04 Javascript
原生JS实现LOADING效果
Mar 16 Javascript
js格式化时间的方法
Dec 18 Javascript
jQuery实现简单的图片查看器
Sep 11 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 Javascript
基于Vue单文件组件详解
Sep 15 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
jquery移动节点实例
2015/01/14 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
python在地图上画比例的实例详解
2020/11/13 Python
python selenium 获取接口数据的实现
2020/12/07 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
高分子材料与工程专业个人求职信
2013/12/15 职场文书
运动会邀请函范文
2014/01/31 职场文书
个人实习生的自我评价
2014/02/16 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
大学生见习总结报告
2015/06/24 职场文书
介绍信应该怎么开?
2019/04/03 职场文书