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仿做发微博功能示例
Apr 18 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
Jun 23 Javascript
javascript实现将文件保存到本地方法汇总
Jul 26 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
Sep 05 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
灵活的理解JavaScript中的this指向
Feb 25 Javascript
JS传值出现中文参数乱码的解决方法
Jun 30 Javascript
vue增删改查的简单操作
Jul 15 Javascript
Node.js实现发送邮件功能
Nov 06 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
JavaScript基于用户照片姓名生成海报
May 29 Javascript
JavaScript实时更新当前的时间的示例代码
Jul 15 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
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python第三方库的安装方法总结
2016/06/06 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
Python连接Redis的基本配置方法
2018/09/13 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
python科学计算之narray对象用法
2019/11/25 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
法学院方阵解说词
2014/01/29 职场文书
大学生实习证明范本
2014/09/19 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
Python实现打乒乓小游戏
2021/09/25 Python