【发布时间】: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);
在我的父组件中,我监听 <v-address @address:change="changeAddress"></v-address> 组件的变化。
然后我在我的父组件中尝试输出这些更改:
methods: {
...mapActions([
'setE6',
]),
changeAddress(value, event) {
console.log(value);
}
}
当我查看控制台时,我绝对没有任何输出。即使在该函数中硬编码字符串也不会返回任何内容。
我做错了什么?
【问题讨论】:
-
这可能是
:的使用导致与使用:传递数据(如:prop="value")的一些语法冲突。您可以尝试使用不同的字符,或者根本不使用字符吗? -
我确实尝试了普通的烤肉串,但无济于事。
-
你能发一份复制品吗?
标签: javascript vue.js components emit