美文网首页
Vue父子组件相互通信三种方法

Vue父子组件相互通信三种方法

作者: 马小帅mm | 来源:发表于2018-08-15 19:08 被阅读0次

在vue中,我们经常会用到组件之间互相通信,父组件调用子组件的值,子组件调用父组件的值...
如果没有用到vuex,那么我们可以用什么方法来实现?

以下总结了几种方法:

1.使用事件机制,在父组件监听事件on, 在子组件调用事件emit(该方法适用于不是父子组件之间的通信)

父组件
<template>
    <div>
        <section>
            <children-components :options="parent_option"></children-components>
        </section>
    </div>
</template>

<script>
import childrenComponents from '@/components/test/ChildrenComponents';

export default {
    name: 'Index',
    components: {
        'children-components': childrenComponents
    },
    data () {
        return {
            parent_option: { input_value: 5 }
        }
    },
    mounted () {
        this.$event.on('change_value', e => {//注意this.$event.on方法就是对this.$on的封装
            this.parent_option = e.parent_option;
        });
        
    },
}
</script>
子组件
<template>
    <div>
        <input type="text" v-model="child_option.input_value"/>
    </div>
</template>

<script>
export default {
    name: 'ChildrenComponents',
    props: {
        options: { type: Object, required: true },
    },
    watch: {
        'child_option':{
        handler(newValue, oldValue) {
          this.$event.emit('change_value', {//注意this.$event.emit方法就是对this.$emit的封装
                    parent_option: newValue
                });
        },
        deep: true
      }
    },
    data(){
        return {
            child_option: { input_value: 6 }
        }
    }
}
</script>

2.父组件传值过去后子组件使用这个变量

父组件
<template>
    <div>
        <children-components :options="dcamera_option"></children-components>
    </div>
</template>

<script>
export default {
    name: 'index',
    components: {
        'children-components': childrenComponents
    },
    data(){
         dcamera_option: { input_value: 6 }
    }
}
</script>
子组件
<template>
    <div>
        <input type="text" v-model="options.input_value"/>
    </div>
</template>

<script>
export default {
    name: 'ChildrenComponents',
    props: {
        options: { type: Object, required: true },
    }
}
</script>

3.父组件传值过去后子组件调用这个变量

父组件
<template>
    <div>
        <children-components :options="dcamera_option"></children-components>
    </div>
</template>

<script>
export default {
    name: 'index',
    components: {
        'children-components': childrenComponents
    },
    data(){
         dcamera_option: { input_value: 6 }
    }
}
</script>
子组件
<template>
    <div>
        <input type="text" v-model="input_option.input_value" :change="chageValue()"/>
    </div>
</template>

<script>
export default {
    name: 'ChildrenComponents',
    props: {
        options: { type: Object, required: true },
    },
    data(){
        input_option: { input_value: 6 }
    },
    methods: {
        chageValue: function(){
            this.options.input_value = this.input_option.input_value;
        }
    }
}
</script>

end----------------------------

相关文章

  • Vue如何实现组件通信?

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

  • vue组件间通信的一些实用方法(VUE2.x)

    vue组件间通信的一些实用方法(VUE2.x) 一、父子组件间通信 常用的父子组件通信方法,一般涉及props和$...

  • vue组件通信,中央事件总线

    vue 组件通信分为父组件与子组件通信、子组件与父组件通信、非父子关系组件通信三种 第一种大家都知道用props,...

  • Vue相关知识点

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

  • vue事件总线EventBus

    vue组件有父子组件通信:props兄弟组件通信:可以使用vuex,还可以使用事件总线eventBus 使用方法:...

  • vue2中eventbus遇到的坑

    前言 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数...

  • Vue事件总线(EventBus)使用详细介绍

    前言 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数...

  • Vue 组件间通信

    背景 在使用 Vue 时,经常会有父子组件之间的通信需求,有很多种方法可以实现。 实现 父组件向子组件通信 方法一...

  • Vue事件总线(EventBus)

    vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过props向下传数据给子组件...

  • VUE - EventBus

    vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数据给子...

网友评论

      本文标题:Vue父子组件相互通信三种方法

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