【问题标题】:Vue.js emitting object to parent componentVue.js 向父组件发射对象
【发布时间】:2019-03-03 15:37:00
【问题描述】:

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

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

<v-text-field
  v-model="address.address_line_1"
  label="Street Address"
  required
  @change="inputChanged">
</v-text-field>

我在下面听变化:

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);
            }
        }
    }

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

当我在 inputChanged() 方法中 console.log(this.address) 时,我得到了具有所有可用值的正确对象。

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

使用 vue devtools 我得到了正确的发射:

在我的父组件中,我监听 &lt;v-address @address:change="changeAddress"&gt;&lt;/v-address&gt; 组件的变化。

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

methods: {
   ...mapActions([
       'setE6',
   ]),
   changeAddress(value, event) {
       console.log(value);
   }
}

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

我做错了什么?

【问题讨论】:

  • 这可能是: 的使用导致与使用: 传递数据(如:prop="value")的一些语法冲突。您可以尝试使用不同的字符,或者根本不使用字符吗?
  • 我确实尝试了普通的烤肉串,但无济于事。
  • 你能发一份复制品吗?

标签: javascript vue.js components emit


【解决方案1】:

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

我将事件监听器添加到错误的父组件中。

【讨论】:

  • 很高兴您找到了解决问题的方法 :)
猜你喜欢
  • 2021-01-06
  • 1970-01-01
  • 2019-08-28
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2019-02-22
  • 2017-04-25
相关资源
最近更新 更多