美文网首页Vue工作生活
Vue组件详解---组件通信

Vue组件详解---组件通信

作者: 缺月楼 | 来源:发表于2019-06-30 17:08 被阅读6次

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

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

使用v­-on 除了监昕 DOM 事件外,还可以用于组件之间的自定义事件。
JavaScript 的设计模式 一一观察者模式, dispatchEventaddEventListener这两个方法。 Vue 组件也有与之类似的一套模式,子组件用$emit()来 触发事件 ,父组件用$on()来 监昕子组件的事件 。
小栗子:
第一步:自定义事件
第二步: 在子组件中用$emit触发事件,第一个参数是事件名,后边的参数是要传递的数据
第三步:在自定义事件中用一个参数来接收
小栗子:

<div id="app" style="border:2px solid green;height:400px;">
        您现在的银行卡余额为:{{total}}
        <!--  步骤一: // 父组件中自定义事件 -->
        <son-component @change="handleTotal"></son-component>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

    <script>
        // 需求通过加号按钮和减号按钮 来给父组件传递数据
        Vue.component('son-component', {
            template: '<div>\
                           <button @click="handleincrease">+1000</button> \
                           <button @click="handlereduce">-1000</button>\
                         </div>',
            data: function() {
                return {
                    count: 1000
                }
            },
            methods: {
                handleincrease: function() {
                    this.count = this.count + 1000;
                    // 步骤二
                    // 在子组件中用$emit触发事件, 第一个参数是事件名, 后边的参数是要传递的数据
                    this.$emit('change', this.count)
                },
                handlereduce: function() {
                    this.count = this.count - 1000;
                    // 步骤二
                    // 在子组件中用$emit触发事件, 第一个参数是事件名, 后边的参数是要传递的数据
                    this.$emit('change', this.count)
                }
            },
        })
        var app = new Vue({
            el: '#app',
            data: {
                total: 1000
            },
            methods: {
                // 父组件中自定义事件
                // 步骤三    在自定义事件中用一个参数来接受
                handleTotal: function(value) {
                    // 此处的形参value就是传递过来的数据 this.count
                    this.total = value
                }
            }
        })
    </script>

在组件中使用v-­model

$emit的代码,这行代码实际上会触发一个 input事件, ‘input’后的参数就是传递给v-­model绑定的属性的值

v­-model 其实是一个语法糖,这背后其实做了两个操作

  • v-bind 绑定一个 value 属性
  • v­-on 指令给当前元素绑定input 事件

要使用v-­model,要做到:
1、接收一个 value 属性。
2、在有新的 value 时触发 input事件
小栗子:

 <div id="app" style="border:2px solid green;height:400px;">
        您的余额为{{total}}
        <!-- <son-component @change="handou"></son-component> -->
        <son-component v-model="total"></son-component>
        v-model ---其实就是绑定了input 事件,当触发input的时候,input事件就会自动接收传递过来的参数(this.count),并赋值给total
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

    <script>
        // 需求通过加号按钮和减号按钮 来给父组件传递数据
        Vue.component('son-component', {
            template: '<div>\
                           <button @click="handleincrease">+1000</button> \
                              \
                         </div>',
            data: function() {
                return {
                    count: 1000
                }
            },
            methods: {
                handleincrease: function() {
                    this.count += 1000
                        // this.$emit('change', this.count)
                    this.$emit('input', this.count)
                },
            },
        })
        var app = new Vue({
            el: '#app',
            data: {
                total: 1000
            },
            methods: {
                // handou: function(value) {
                //     // this.total = value
                // }
            },

        })
    </script>

相关文章

  • Vue组件详解---组件通信

    组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信 自定义事件—子组件给父组件传递数据 使用v­-on 除了监...

  • vue组件之间通信

    vue 组件之间通信 vue组件之间通信方式: 1.父组件通过props向下传数据给子组件,子组件通过$emit事...

  • Vue组件通信

    Vue组件通信 Vue组件关系可分为三大类: 父子组件 兄弟组件 跨级组件, 相应的组件之间的通信也分类三大类: ...

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

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

  • 【Vue】组件通信(任意通信)

    本节所需的基础知识: 【Vue】组件通信(父传子props) 【Vue】组件通信(子传父$emit) 任意组件相互...

  • Vue相关知识点

    1、vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不...

  • Vue如何实现组件通信?

    Vue组件通信的三种情况: 父子通信 爷孙通信 兄弟通信 父子通信:父组件使用Prop向子组件传递数据,子组件通过...

  • vue组件通信详解

    props和$emit 中央事件总线 new bus provide/inject负组件中通过provider来提...

  • 详解Vue组件通信

    父子组件的通信是开发是最常用的也是最重要的 二级标题你们一定知道父子通信是用prop传递数据的 父组件 子组件 子...

  • Vue 组件详解之组件通信

    组件中的关系可分为父子组件通信、兄弟组件通信和跨级组件通信。 一、自定义事件 ---- 子组件给父组件传递数据 我...

网友评论

    本文标题:Vue组件详解---组件通信

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