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. Python之学会测试,让开发更加高效(一)

      前几天,听了公司某位大佬关于编程心得的体会,其中讲到了"测试驱动开发",感觉自己的测试技能薄弱,因此,写下这篇文章,希望对测试能有个入门.这段时间,笔者也体会到了测试的价值,一 ...

  2. 获取 ProgramData 文件夹路径

    ]; if (SHGetFolderPathA( NULL, CSIDL_COMMON_STARTUP, NULL, , startUpDir) != S_OK) { printf("SHG ...

  3. Springboot以Tomcat为容器实现http重定向到https的两种方式

    1 简介 本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来. 建议阅读之前的相关文章: (1) Sprin ...

  4. java内存模型(JMM)和happens-before

    目录 重排序 Happens-Before 安全发布 初始化安全性 java内存模型(JMM)和happens-before 我们知道java程序是运行在JVM中的,而JVM就是构建在内存上的虚拟机, ...

  5. java 之 构造器 static关键字

    构造器  特点: 方法名和类名一至,没有void没有返回,无参数的称为无参构造器,有参数的称为有参构造器 语法: public 类名 {数据类型 参数名} 目的:创建对象 注意:如果类中没有带有参数的 ...

  6. linux rpm包

    rpm包,软件包,程序包,以.rpm结尾的包 我们刚开始安装的Linux系统是最小化安装(minimol),只安装系统,不安装不必要的软件包 刚开始vim,ifconfig,tree等命令都没有,当然 ...

  7. Yii项目Security加密解密类提取

    <?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * ...

  8. "net.sf.hibernate.PropertyValueException"

    2019独角兽企业重金招聘Python工程师标准>>> 如果你遇到了下面的错误信息,例如: ERROR [Importing data task] [confluence.impor ...

  9. 图论--差分约束--POJ 3169 Layout(超级源汇建图)

    Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 < ...

  10. 图论--网络流--最大流 HDU 3572 Task Schedule(限流建图,超级源汇)

    Problem Description Our geometry princess XMM has stoped her study in computational geometry to conc ...