v-on="$listeners"和v-bind="$attrs"

常用于多层级组件之间的通信(>2层)

 

主要是在中间层组件使用:(注意中间层别接收需要向底层传递的参数)

高层级向底层级传值:(v-bind="$attrs")

底层级向高层级调方法:(v-on="$listeners")

复制代码
<template>
  <div>
    <div>{{ title }}</div>
    <son v-bind="$attrs" v-on="$listeners"></son>
  </div>
</template>

<script>
import Son from '@/components/son'

export default {
  components: {
    Son
  },
  data() {
    return {
      title: '我是me'
    }
  }
}
</script>
复制代码

 

高层级还是像普通的组件传值一样,:xxx="xxx" ,接收参数还是像emit一样。@xxx="xxx"

复制代码
<template>
  <div>
    <div @click="clean">{{ title }}</div>
    <div @click="clean">{{sonName}}</div>
    <me :name="name" @cliName="cliName"></me>
  </div>
</template>

<script>
import Me from '@/components/me'

export default {
  components: {
    Me
  },
  data() {
    return {
      title: '我是father',
      name: '我是从father传值的数据',
      sonName: ''
    }
  },
  methods: {
    cliName(e) {
      this.sonName = e
    },
    clean() {
      this.sonName = ''
    }
  }
}
</script>
复制代码

 

底层接收参数props和向高层传递参数emit:

复制代码
<template>
  <div>
    <div>{{ title }}</div>
    <div @click="cli">{{ name }}</div>
  </div>
</template>

<script>
export default {
  props: {
    name: String
  },
  data() {
    return {
      title: '我是son'
    }
  },
  methods: {
    cli() {
      this.$emit('cliName', '我是从son传值的数据')
    }
  }
}
</script>
复制代码

 

posted on   sss大辉  阅读(350)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示