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 相关文章推荐
prototype 的说明 js类
Sep 07 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
Feb 27 Javascript
jquery利用拖拽方式在图片上添加热链接
Nov 24 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
JS Attribute属性操作详解
May 19 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
JavaScript如何获取到导航条中HTTP信息
Oct 10 Javascript
React diff算法的实现示例
Apr 20 Javascript
Vue的props父传子的示例代码
May 20 Javascript
vue实现输入框自动跳转功能
May 20 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
Jun 02 jQuery
详解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/01 无线电
PHP编译configure时常见错误的总结
2017/08/17 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
简述JS控制台的使用
2018/07/15 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python中标准模块importlib详解
2017/04/16 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python编写打字训练小程序
2019/09/26 Python
python实现最速下降法
2020/03/24 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
体育专业求职信
2014/07/16 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
运动会主持人开幕词
2016/03/04 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
配置nginx 重定向到系统维护页面
2021/06/08 Servers