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 中字符串连接的性能的一些问题
May 07 Javascript
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
Sep 19 Javascript
详解自动生成博客目录案例
Dec 09 Javascript
简单实现node.js图片上传
Dec 18 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
vue实现购物车的监听
Apr 20 Javascript
手把手教你如何编译打包video.js
Dec 09 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 mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Django密码系统实现过程详解
2019/07/19 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
土木工程应届生自荐信
2013/09/24 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
派出所所长先进事迹
2014/05/19 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
追悼会悼词大全
2015/06/23 职场文书
学习经验交流会策划书
2015/11/02 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技