vue-router实现组件间的跳转---参数传递
四、通过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-router实现组件间的跳转---参数传递的更多相关文章
- vue 和 react 组件间通信方法对比
vue 和 react 组件间通信方法对比: 通信路径 vue的方法 react的方法 父组件 => 子组件 props(推荐).slot(推荐).this.$refs.this.$childr ...
- vue仓库、组件间通信、前后台数据交互、前端储存数据大汇总
目录 路由重定向 仓库介绍 vuex插件:可以完成任意组件间信息交互(移动端) 前端存储数据大汇总 前后台交互方式(重点) 前后台数据交互 axios插件:完成前后台ajax交互的 同源策略 - 前后 ...
- vue程序中组件间的传值方式
vue程序在组件中进行传值有多种方式,这里记录我在项目中使用到的三种: 1. 父组件向子组件传值 2. 子组件向父组件传值 3. 通过路由传参 父组件通过props向子组件传值 在子组件script中 ...
- 通过vue-router实现组件间的跳转
三.通过VueRouter来实现组件之间的跳转提供了3种方式实现跳转:①直接修改地址栏中的路由地址 <!doctype html> <html> <head> &l ...
- vue的父子组件间的相互传参props及props数据的多种验证机制
感觉自己即将完全步入前端大军,后台老板都不需要我弄了,塞翁失马...时间会告诉我们是好是坏 好了言归正传,最近vue是搞的不亦乐乎啊,下面来总结一下vue组件间的各种使用方法以及一些技巧 ------ ...
- Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题
1.父子级间通信,父类找子类非常容易,直接在子组件上加一个ref,父组件直接通过this.$refs操作子组件的数据和方法 父 这边子组件中 就完成了父 => 子组件通信 2. 子 =&g ...
- vue中兄弟组件间通讯
vue2.0中兄弟组件间的通讯是通过eventBus(事件发布订阅)实现的. eventBus.js import Vue from 'vue' const eventBus = new Vue() ...
- vue之父子组件间通信实例讲解(props、$ref、$emit)
组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信. 组件是 vue.js 最强大的功能之一,而组件实例 ...
- vue非父子组件间传参问题
最近在使用vue进行开发,遇到了组件之间传参的问题,此处主要是针对非父子组件之间的传参问题进行总结,方法如下:一.如果两个组件用友共同的父组件,即 FatherComponent.vue代码 < ...
随机推荐
- tp5 apache 转 nginx 需要配置的伪静态
location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$ last; break; } }
- parted分区的步骤
使用parted分区的步骤1. fdisk -l ##查看一下当前的存储设备,这里可以看到新加入的磁盘,比如/dev/sdb2. parted /dev/sdb ...
- 基于element ui 实现七牛云自定义key上传文件,并监听更新上传进度
借助上传Upload 上传组件的 http-request 覆盖默认的上传行为,可以自定义上传的实现 <el-upload multiple ref="sliderUpload&quo ...
- 【NOIP2016提高A组五校联考2】tree
题目 给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1.每个结点上有一个物品,第i 个结点上的物品价值为vi. 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的 ...
- spark读取kafka数据 createStream和createDirectStream的区别
1.KafkaUtils.createDstream 构造函数为KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic, ...
- 对vue源码之缓存的研究--------------引用
探索vue源码之缓存篇 一.从链表说起 首先我们来看一下链表的定义: 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个 ...
- Q15格式表示负小数
1.用Q15.16-bit格式,表示出-0.5? 解析:其实很简单,Q15是dsp里为了优化浮点的,就是将小数* 2^15. 例如:0.333 * 32768 = 10911.744 取整数就是10 ...
- 51Nod 1433 0和5 (数论 && 被9整除数的特点)
题意 : 小K手中有n(1~1000)张牌, 每张牌上有一个一位数的数, 这个字数不是0就是5.小K从这些牌在抽出任意张(不能抽0张), 排成一行这样就组成了一个数.使得这个数尽可能大, 而且可以被9 ...
- 【canvas学习笔记七】混合和裁剪
globalCompositeOperation 如果我们先画了一个图形,然后要在这个图形上面再画一个图形,那么这个图形会怎么样呢?是覆盖在原来的图形上面吗?这时候,就要用到globalComposi ...
- ASP.NET MVC3.0下载功能实现
C#代码: #region 下载文件 /// <summary> /// 下载文件 /// </summary> /// <param name="url&qu ...