1. 子组件使用父组件方法,并向父组件传值

子组件代码

<template>
<div class="menu">
<div class="item-group" v-for="(item,index) in menu">
<router-link :to="item.url" tag="div" class="wrap" @click.native="handlerClick(item.txt)">
<!-- .native实现原生事件 -->
<div :class="item.icon"></div>
<div class="txt">{{item.txt}}</div>
</router-link>
</div>
</div>
</template> <script>
export default{
name:"Menu",
props:{
menu:{
type:Array
}
},
data(){
return{
show:false
}
},
methods:{
//子组件使用父组件方法,并向父组件传值
handlerClick(txt){
this.$emit("func",txt)
},
}
}
</script>

父组件代码:

<template>
<div class="recommend">
<Menu :menu="nav" @func="show" ></Menu>
<Menu :menu="more" style="background-color: #f5f5f5; padding:10px 0px" v-show="state"></Menu>
<div class="song-list-area">
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
</div>
</div>
</template> <script>
import Menu from "../comment/menu.vue"
export default{
name:"Recommend",
data(){
return{
nav:[
{id:0,txt:"乐库",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:1,txt:"猜你喜欢",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:2,txt:"每日推荐",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:3,txt:"排行榜",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:4,txt:"更多",icon:"iconfont icon-aixin_line",hiden:false,url:"/"}
],
more:[
{id:0,txt:"音乐相册",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:1,txt:"相亲",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:2,txt:"偶遇",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:3,txt:"音乐速配",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:4,txt:"语音直播",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:5,txt:"探索",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:6,txt:"游戏中心",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:7,txt:"唱片店",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:8,txt:"首唱会",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:9,txt:"铃声彩铃",icon:"iconfont icon-aixin_line",hiden:false,url:"/"}
],
state:false
}
},
components:{
Menu
},
mounted() { },
methods:{
show(data){
console.log("data",data)
this.nav.forEach((item,index)=>{
if(item.txt==data){
this.state=! this.state
}
})
},
}
}
</script>

主要是子组件使用this.$emit("定义父组件方法名称",参数)

父组件就可以使用 @定义父组件方法的名称="方法名"

2.父组件使用子组件方法  ,并向子组件传递数据

子组件代码:

<template>
<div class="menu">
<div class="item-group" v-for="(item,index) in menu">
<router-link :to="item.url" tag="div" class="wrap" @click.native="handlerClick">
<!-- .native实现原生事件 -->
<div :class="item.icon"></div>
<div class="txt">{{item.txt}}</div>
</router-link>
</div>
</div>
</template> <script>
export default{
name:"Menu",
props:{
menu:{
type:Array
}
},
data(){
return{
show:false
}
},
methods:{
handlerClick(txt){
console.log(txt)
}, // 子组件使用父组件方法,并向父组件传值
// handlerClick(txt){
// this.$emit("func",txt)
// },
}
}
</script>

父组件代码:

<template>
<div class="recommend">
<Menu :menu="nav" ref="nav"></Menu>
<input type="button" value="点击" @click=handlerClick()>
<Menu :menu="more" style="background-color: #f5f5f5; padding:10px 0px" v-show="state"></Menu>
<div class="song-list-area">
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
<div class="song-group">
<img src="" alt="">
<p>原来那些歌的原曲在这里</p>
</div>
</div>
</div>
</template> <script>
import Menu from "../comment/menu.vue"
export default{
name:"Recommend",
data(){
return{
nav:[
{id:0,txt:"乐库",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:1,txt:"猜你喜欢",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:2,txt:"每日推荐",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:3,txt:"排行榜",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:4,txt:"更多",icon:"iconfont icon-aixin_line",hiden:false,url:"/"}
],
more:[
{id:0,txt:"音乐相册",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:1,txt:"相亲",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:2,txt:"偶遇",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:3,txt:"音乐速配",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:4,txt:"语音直播",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:5,txt:"探索",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:6,txt:"游戏中心",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:7,txt:"唱片店",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:8,txt:"首唱会",icon:"iconfont icon-aixin_line",hiden:false,url:"/"},
{id:9,txt:"铃声彩铃",icon:"iconfont icon-aixin_line",hiden:false,url:"/"}
],
state:false
}
},
components:{
Menu
},
mounted() { },
methods:{
handlerClick(){
this.$refs.nav.handlerClick("我是父组件向子组件传递的值")
}
// show(data){
// console.log("data",data)
// this.nav.forEach((item,index)=>{
// if(item.txt==data){
// this.state=! this.state
// }
// })
// },
}
}
</script>

主要是在父组件使用的子组件上添加 ref="名称"  在父组件方法中使用this.$refs.名称.子组件方法名称(传递的参数)

子组件定义方法  子组件方法名称(参数){console.log(参数)}

3.父组件向子组件传递数据也可以通过  在子组件中使用props定义传递的数据类型等

在父组件中的子组件使用中绑定数据

vue父子组件之间相互传值的更多相关文章

  1. 浅谈vue父子组件之间的传值

    前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ...

  2. VUE 父子组件之间通信传值 props和 $emit

    1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件          <div id="app" >               <tr ...

  3. vue父子组件之间的传值

    引入组件 父组件 <div> <form-edit></form-edit> </div> import FormEdit from "路径& ...

  4. vue项目中的父子组件之间的传值。

    首先说一下父子组件就是在一个vue文件中引入另一个vue文件,被引入vue文件就是子组件,引入vue文件的vue文件就是父组件.而在父组件中是不能直接调用子组件中的变量值的.下面详细说一下,父子组件之 ...

  5. vue中父子组件之间的传值、非父子组件之间的传值

    在Vue实例中每个组件之间都是相互独立的,都有自己的作用域,所以组件之间是不能直接获取数据.在项目开发中一个组件可能需要获取另一个组件的值,我们可以通过其他方法间接的获取.所以,获取的方法有以下几种: ...

  6. vue 非父子组件之间的传值(Bus/总线/发布订阅模式/观察者模式)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. VUE中的子父组件、兄弟组件之间相互传值,相互调用彼此的方法

    vue--组件传值 父组件传值给子组件--"props" 一.父组件--示例 <template> <child :choose-data="choos ...

  8. vue组件定义方式,vue父子组件间的传值

    vue组件定义方式,vue父子组件间的传值 <!DOCTYPE html> <html lang="zh-cn"> <head> <met ...

  9. Angular获取dom元素,以及父子组建之间相互传值

    1.使用原生js代码获取dom元素 在ts文件中有一个ngOnInit()的方法,这个方式是指在模块加载完毕之后并不是dom加载完毕,也就是说如果你的dom元素中使用的angular的指令,然后想在这 ...

随机推荐

  1. 前端基础进阶(六)-大厂面试题问题:循环闭包与setTimeout

    我在上一篇闭包的文章中留下了一个关于setTimeout与循环闭包的思考题. 利用闭包,修改下面的代码,让循环输出的结果依次为1, 2, 3, 4, 5 for (var i = 1; i <= ...

  2. git在push时候出现timeout的解决方法

    1.先对照一下公钥是否正确:linux下生成的.ssh在~/.ssh,命令行直接cd ~/.ssh即可:2.本次出现的问题如下: 出现了连接不上的情况,传输协议用的是ssh,此时需要进行如下操作: 进 ...

  3. 文件上传漏洞(pikachu)

    文件上传漏洞 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像,附件等等.当用户点击上传按钮后,后台会对上传的文件进行判断,比如是否是指定的类型.后缀名.大小等等,然后将其按照设 ...

  4. docker容器介绍

                       Docker容器 一.什么是Docker? Docker时Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Git ...

  5. 什么是.pyc文件

    1. Python是一门解释型语言? Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. 如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled ...

  6. Mybatis自动生成插件对数据库类型为text的处理

    2019独角兽企业重金招聘Python工程师标准>>> 如果数据库中的字段为text或者blob这种大文本类型,在使用MybatisGenerator工具自动生成代码的时候会将其进行 ...

  7. stl的stack在开发中的应用

    栈有后进先出特点,我们可以用它来暂时保存数据,在画板开发中,我用到了栈来保存用户的每一步操作,当用户点击撤销时可以把图像从栈里面取出,然后恢复.浏览器的前进和后退也是这个原理,只是它保存的是网页罢了. ...

  8. Jenkins 项目构建

    一:新建项目 (1)点击新建,输入项目名称--构建一个自由风格的软件项目,点击ok (2)构建触发器-----设置每两分钟执行一次 其中有5个参数 (*****) 第一个是代表分钟  一小时内的分钟数 ...

  9. 网络流中的图像转化为OpenCV中的Mat类型

    1,从网络中读取到的图像流,不支持查找,不能直接转化为Mat类型 2,例子如下: string Url = "http://192.168.0.110/cgi-bin/camera?reso ...

  10. Jenkins如何进行权限管理

    一.安装插件 插件名:Role-based Authorization Strategy 二.配置授权策略 三.创建用户 四.添加并配置权限 4.1.添加Global Role 普通角色拥有全局只读权 ...