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的AJAX实现文件下载的小例子
May 15 Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
ES6新特性之函数的扩展实例详解
Apr 01 Javascript
vue 里面使用axios 和封装的示例代码
Sep 01 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 Javascript
解决vue scoped scss 无效的问题
Sep 04 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调用三种数据库的方法(1)
2006/10/09 PHP
浅谈php://filter的妙用
2019/03/05 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python实现电子书翻页小程序
2019/07/23 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
演讲比赛获奖感言
2014/02/02 职场文书
法律进企业活动方案
2014/03/04 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
银行求职自荐信
2014/06/30 职场文书
大学同学会活动方案
2014/08/20 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技