例如,我在模板中导入了一个名为<pic-upload>
的组件,例如
<template>
<pic-upload></pic-upload>
</template>
export default {
data: () => ({
show: {
content: '',
recommend: false,
albums: []
}
}),
components: {
picUpload
},
methods: {
submit: function () {
dataService.postpic(this.show).then(() => {
this.$toast({
message: 'success'
})
})
}
}
}
并在<pic-upload>
组件中,它返回数据和方法,如:
// pic-upload component
export default {
data () {
return {
imgList: []
}
},
methods: {
getUploadedImgList () {
return this.imgList
}
}
}
那么如何在imgList
组件中获取template
数组的值,我可以将数据发布到服务器上?
答案 0 :(得分:3)
您正在寻找的是将数据从孩子发送到父母。在Vue.js中,父子组件关系可以概括为支持向下,事件向上。父级通过道具将数据传递给子级,子级通过事件向父级发送消息。
您可以查看示例here,您可以在父组件中定义方法,并使用this.$emit()从子组件调用该方法。
您可以在父组件中定义方法saveLists
:
<template>
<pic-upload></pic-upload>
</template>
export default {
data: () => ({
show: {
content: '',
recommend: false,
albums: []
}
}),
components: {
picUpload
},
methods: {
submit: function () {
dataService.postpic(this.show).then(() => {
this.$toast({
message: 'success'
})
})
},
saveLists: function () {
//Code to save
}
}
}
然后,您可以使用子组件中的$emit
触发此方法,如下所示:
// pic-upload component
export default {
data () {
return {
imgList: []
}
},
methods: {
getUploadedImgList () {
return this.imgList
},
callParent () {
this.$emit('saveLists')
}
}
}