zoukankan      html  css  js  c++  java
  • vue组件间的通信

    父子组件之间的传值

      子组件向父组件传值时,在子组件内部添加事件,当事件触发时进行数据操作,在事件处理函数中通过$emit触发父组件的自定义事件,实质上是子组件的事件触发后会触发父组件的自定义件,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。父组件向子组件传值利用props自定义一个属性,将需要传递的数据赋值给该属性,子组件就可以接收到数据。
    总结:父子组件之间的传值都是通过对一个媒介,父传子是通过子组件定义的属性,子传父是通过父组件的自定义事件

        <div id="app">
          <p>{{ sum }}</p>
          <button-counter :title='msg' @add='changeSum'></button-counter>
          <button-counter @add='changeSum'></button-counter>
        </div>
    
        Vue.component ('button-counter', {
          template: `<button @click='clickHandel'>{{ this.count }}</button>`,
          data () {
            return {
              count: 0
            }
            props: ['title']
          },
          methods: {
            clickHandel () {
              this.count ++,
              this.$emit('add')
                console.log(this.title)
            }
          }
        })
          new Vue ({
            el: '#app',
            data () {
              return {
                sum: 0
              }
            },
            methods: {
              changeSum () {
                this.sum ++
              }
            }
          })
    
    非父子组件之间的传值(在一个组件中通过$on监听一个自定义事件,在另一个组件中通过$emit 触发该自定义事件,并传递参数数据)在简单的场景下,可以使用一个空的 Vue 实例作为事件总线:
    // bus.js
    import Vue from 'vue'
    var bus = new Vue()
    export default bus
    // module.exports = bus
    

    两个非父子组件

    // A
    <template>
        <div>
            <button @click="sendToB">toB</button>
        </div>
    </template>
    
    <script>
    import Bus from './bus'
    export default {
        methods:{
            sendToB: function () {
                Bus.$emit('toBFlag','hello')
            }
        }
    
    }
    </script>
    
    <style>
    
    </style>
    
    
    // B
    <template>
      
    </template>
    
    <script>
    import Bus from './bus'
    export default {
      created: function () {
          Bus.$on('toBFlag',function (data) {
              console.log(data)
          })
      }
    }
    </script>
    
    <style>
    
    </style>
    
    
  • 相关阅读:
    第六章:单元测试框架unittest
    Jenkins 使用 war包安装时,如果出现报离线错误解决方法
    Appium自动化封装教案
    yaml文件读取(5.1之前与5.1之后对比)
    appium-desktop配置运用方法
    postwoman 配置
    jwt解析
    pytest
    centos安装python3.8
    linux 查找命令
  • 原文地址:https://www.cnblogs.com/muqiao/p/8524534.html
Copyright © 2011-2022 走看看