• 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>
  • 相关阅读:
    linux基础命令之一
    Chrome 控制台使用大全
    移动端效果 — 页面引入在线视频
    移动端——简单计分表单
    JS操作cookie
    移动端页面字体——rem的使用
    Highcharts 使用总结
    CSS水平居中
    python学习 day2
    python学习 day1
  • 原文地址:https://www.cnblogs.com/ssszjh/p/14720950.html
Copyright © 2020-2023  润新知