Vue.js 向父组件发送对象

Mar*_*sen 5 javascript components emit vue.js

我无法弄清楚为什么我无法在父组件中监听子组件的更改。

我有一个自定义<v-address></v-address>组件,其中包含多个输入字段,供用户输入地址,如下所示:

<v-text-field
  v-model="address.address_line_1"
  label="Street Address"
  required
  @change="inputChanged">
</v-text-field>
Run Code Online (Sandbox Code Playgroud)

在下面我聆听变化:

import { mapGetters, mapActions } from 'vuex';
    export default {
        data() {
            return {
                address: {
                    address_line_1: '',
                    address_line_2: '',
                    city: '',
                    province: '',
                    postal_code: ''
                }
            }
        },
        computed: {
            ...mapGetters([
                'getProvinces',
            ]),
        },
        methods: {
            inputChanged() {
                this.$emit('address:change', this.address);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

每次更改输入字段时,我都想将整个地址对象发送到父组件。

当我console.log(this.address)进入该inputChanged()方法时,我得到了包含所有可用值的正确对象。

我现在想像这样发出对象: this.$emit('address:change', this.address);

使用 vue devtools 我得到了正确的发射: 在此输入图像描述

在我的父组件中,我监听<v-address @address:change="changeAddress"></v-address>组件中的更改。

然后,在我的父组件中,我尝试输出这些更改:

methods: {
   ...mapActions([
       'setE6',
   ]),
   changeAddress(value, event) {
       console.log(value);
   }
}
Run Code Online (Sandbox Code Playgroud)

当我查看控制台时,我完全没有得到任何输出。即使在该函数中对字符串进行硬编码也不会返回任何内容。

我究竟做错了什么?

Mar*_*sen 0

我发现这个错误是由于我的错误造成的。

我将事件侦听器添加到了错误的父组件。