vue 2.0 组件:父子组件通信

2017-04-02  本文已影响85人  码农明明

方法一: input

示例:输入框

组件

通过this.$emit('input', value)将将用户的之输出到v-model绑定的值

<input v-bind:id="randomId"  v-bind:value="value" v-on:input="onInput"/>
export default {
  props: {
    value: String
  },
  data: function () {
    return {
      randomId: 'input-' + Math.random()
    }
  },
  methods: {
    onInput: function (event) {
      this.$emit('input', event.target.value)
    }
  }
}

使用

<my-input v-model="msg"/>

方法二: 自定义事件

原理和一是一样的,但是它给人的感觉是数据是双向的。

组件

用户输入时(input),自定义一个onchange事件,将用户输入的值作为参数传递出去

<input v-bind:id="randomId"  v-bind:value="value" v-on:input="onInput"/>
export default {
  props: {
    msg : String
  },
  data: function () {
    return {
      randomId: 'input-' + Math.random()
    }
  },
  methods: {
    onInput: function (event) {
      this.$emit('onchange', event.target.value)
    }
  }
}

使用

实现自定义事件,获取子组件传递过来的值

<my-input :msg="msg" @onchange="onchange"/>
...
methods: {
    onchange (value) {
        this.msg = value
    }
  }
...

详细解释:自定义事件

上一篇 下一篇

猜你喜欢

热点阅读