美文网首页
组件通信

组件通信

作者: 真的吗_a951 | 来源:发表于2018-09-30 22:01 被阅读0次

组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信

自定义事件--子组件给父组件传递数据

子组件$emit()来触发事件
父组件$on()来监听事件

步骤: 一、自定义事件
二、在子组件中用$emit触发事件,第一个参数是事件名,后边的参数是要传递的数据
三、在自定义事件中用一个参数来接收

<div id="app">
        父组件:{{num}}
        <chang-com @change="total"></chang-com> <!-- 定义一个自定义事件 -->
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        Vue.component('chang-com',{

            template: '<div>\
                        <button @click="addbtn">+100</button>\
                        <button @click="cutbtn">-100</button>\
                        子组件:{{count}}\
                        </div>\
                        ',
            data: function(){
                return {
                    count :2000
                }
            },
            methods: {
                addbtn: function(){
                    this.count += 100
                    this.$emit('change',this.count)//点击的时候同时触发change事件
                },
                cutbtn: function(){
                    this.count -= 100
                    this.$emit('change',this.count)
                }
            }
        })
        var app = new Vue({
            el: '#app',
            data: {
                num: 2000
            },
            methods:{
                total: function(value){//这个value是传递过来的数据(this.count)
                    this.num = value    //
                }
            }
        })
    </script>

在组件中使用v-model

v-model是一个语法糖,实际上做了两个操作

  • v-bind绑定一个value属性
  • v-on指令给当前元素绑定input事件
    当触发input的时候,input事件就会自动接收传递过来的参数,并赋值给已经绑定的值
    demo

非父组件的通信

  • 定义两个组件
  • 在根组件的data中创建bus中介bus: new Vue()
  • 在A组件中绑定事件(后续需要触发事件才能监听事件),添加要传递的内容
    -- 触发事件this.$root.bus.$emit('事件名',传递的数据 )
  • 在B组件中created状态上监听事件this.$root.bus.$on(事件名,function(value){})

demo
父链
this.$parent
子链
this.$children,子组件一般有很多,可以给每个子组件添加ref属性,在父组件事件触发时,通过this.$refs.ref属性名.子组件的内容获取子组件的内容

相关文章

  • vue中的组件通信

    一、组件通信(组件传值) 1.1父子组件通信 1.2子父组件通信 1.3非父子组件通信(兄弟组件通信)

  • 组件通信

    组件通信分为几种: 父组件给子组件通信 子组件给父组件通信 兄弟组件通信 1.父组件给子组件通信 法一...

  • 组件通信

    组件关系 组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信。 父子组件通信 1. 子组件使用 $emit(...

  • react之组件通信

    需要组件之进行通信的几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 ...

  • React组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React中组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React中组件通信

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • 第七章 可复用性的组件详解(中)

    7.7 组件通信 组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信 7.7.1 自定义事件—子组件给父组件传...

  • vue 组件通信方式 ,父子、隔代、兄弟 三类通信,六种方法

    Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通信、兄弟组件通信,下面分别介绍每种通信方式且会说...

  • react 跨级组件通信

    跨级组件通信所谓跨级组件通信,就是父组件向子组件的子组件通信,向更深层的子组件通信。跨级组件通信可以采用下面两种方...

网友评论

      本文标题:组件通信

      本文链接:https://www.haomeiwen.com/subject/bodboftx.html