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. Windows系统安装最新版本RabbitMQ3.8.3及报错解决

    今天想安装下RabbitMQ写几个用例看下,发现最新的安装包有些问题,不能直接安装使用,遇到一些问题,记录一下解决办法. 下载安装包 因为RabbitMQ是Erlang编写,安装时,需要先安装Erla ...

  2. JavaScript学习笔记(1)字符串方法

    字符串方法 length 属性返回字符串的长度 var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln = txt.length; inde ...

  3. 16.What is pass in Python?

    What is pass in Python? Pass means, no-operation Python statement, or in other words it is a place h ...

  4. time wait 整理

    目录 状态转换图 1.谁会进入time wait状态: 主动发起断开连接的一方调用close()函数发送FIN并进入FIN WAIT 1状态,当收到对面反馈的ack之后会进入FIN WAIT2状态.之 ...

  5. windows右键没有新建选项的解决办法

    1 以管理员身份运行cmd 2 cmd /k reg add "HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandl ...

  6. IT服务,共享经济的下一个风口?

    前两天,在上千名CIO参加.释放10亿采购需求的2017华南CIO大会暨信息技术交易会上,一款"一站式IT工程师共享平台"成为大会关注焦点--这就是神州数码旗下的神州邦邦. 其实最 ...

  7. WordPress发布文章/页面时自动添加默认的自定义字段

    如果你每篇文章或页面都需要插入同一个自定义字段和值,可以考虑在WordPress发布文章/页面时,自动添加默认的自定义字段.将下面的代码添加到当前主题的 functions.php 即可: 1 2 3 ...

  8. unittest(discover 批量执行用例)

    import unittest dir = "D:\\work_doc\\pycharm2\\python_Basics" #自动化用例所存放的路径 suit = unittest ...

  9. vue element select多选回显

    我们经常在使用 Element组件里面的 select多选 场景:添加账号的时候需要选择可见分公司(分公司为多选),添加成功之后可以编辑,需要回显添加时所提交的分公司 代码如下: 多选框: data( ...

  10. 再谈 PHP 未来之路

    前段时间我写过一篇博文<phper:敢问路在何方>,分析了 PHPer 的困境以及 PHP 程序员的学习.进阶突破之路.同时我在知乎上也发过类似的提问.从大家的评论和回答看,大体分为以下几 ...