在父组件的子组件发出事件时捕获值

时间:2018-12-23 08:06:55

标签: vue.js vuejs2 eonasdan-datetimepicker

我有一个组件vue-datetimepicker

具有以下内容:

export default {
  name: 'vue-datetimepicker',
  data () {
    return {
      value: ''
    }
  },
  watch: {
    options: function (options) {
      // update options
      $(this.$el).datetimepicker({ data: options })
    }
  },
  mounted: function () {
    var vm = this
    var mycomp = $(this.$el).datetimepicker({})
    mycomp.on('dp.change', function (e) {
      vm.value = e.date
      vm.$emit('change', vm.value)
    })
  },
  destroyed: function () {
    $(this.$el).off().datetimepicker('destroy')
  }
}

以及来自父组件form-preview.vue

我正在尝试捕获它。

    created() {
        this.$on('change', function(id){
            console.log('Event from parent component emitted', id)
        });
    },
    mounted: function() {

    },

我期望更改日期时间,它应该发出更改事件。 但是控制台中什么也没打印。

1 个答案:

答案 0 :(得分:0)

this.$on将侦听同一组件发出的事件。要侦听子组件发出的事件,应在父组件的模板部分的子组件上分配一个事件侦听器。因此,在form-preview.vue的模板部分中,您应该有类似..

的内容
<vue-datetimepicker @change="handleChange" ... / >

然后在父组件的脚本部分中,您可以定义handleChange事件处理程序..

methods: {
    handleChange(value) {
        console.log('Event from child component emitted', value)
    }
}

请注意,事件处理程序将自动接收随事件发出的所有数据。如果要使其明确,可以使用@change="handleChange($event)"