如何获取组件中的列表值?

时间:2016-12-22 06:20:31

标签: javascript vue.js vue-component vuejs2

例如,我在模板中导入了一个名为<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数组的值,我可以将数据发布到服务器上?

1 个答案:

答案 0 :(得分:3)

您正在寻找的是将数据从孩子发送到父母。在Vue.js中,父子组件关系可以概括为支持向下,事件向上。父级通过道具将数据传递给子级,子级通过事件向父级发送消息。

enter image description here

您可以查看示例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')
     }
   }
 }