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判断表单提交时哪个radio按钮被选中的方法
Mar 21 Javascript
JavaScript探测CSS动画是否已经完成的方法
Aug 30 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
canvas实现钟表效果
Feb 13 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
在vue中使用公共过滤器filter的方法
Jun 26 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
解决vue动态下拉菜单 有数据未反应的问题
Aug 06 Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 31 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
django 中QuerySet特性功能详解
2019/07/25 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
办公室主任岗位职责
2013/11/08 职场文书
技术入股协议书
2016/03/22 职场文书