vue技术栈程序员

Vue 父子组件通信

2018-07-02  本文已影响17人  yonglei_shang
子组件与父组件通信

1、通过$emit实现通信

vue2.0只允许单向数据传递,我们通过出发事件来改变组件的数据,废话少说,上干货

子组件代码

<template>
    <div @click="open"></div>
</template>

methods: {
   open() {
        this.$emit('showbox','the msg'); //触发showbox方法,'the msg'为向父组件传递的数据
    }
}

父组件


<child @showbox="toshow" :msg="msg"></child>
 //监听子组件触发的showbox事件,然后调用toshow方法
methods: { toshow(msg) { this.msg = msg; }}

2、v-model实现通信

父组件可以如下写:

<my-checkbox v-model="haorooms"></my-checkbox>

子组件:

<input 
               type="checkbox"
               <!--这里就不用 input 了,而是 balabala-->
               @change="$emit('balabala', $event.target.checked)"
               :checked="value"
             />

 export default {
        data(){
            return{
            }
        },
       props: ['checked'], //这里就不用 value 了,而是 checked
      model: {
          prop: 'checked',
          event: 'balabala'
       },
    }

3、.sync

父组件

<comp :foo.sync="bar"></comp>

当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件

this.$emit('update:foo', newValue)
上一篇 下一篇

猜你喜欢

热点阅读