cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menghantar data input komponen anak kepada komponen induk dan menyimpan ke dalam tatasusunan dalam Vue.js?

** Sebagai contoh, di sini apabila saya mengklik butang saya akan mempunyai satu lagi komponen yang bermaksud ia akan mempunyai data baharu jadi saya ingin mengumpul semua maklumat ke dalam tatasusunan apabila butang "Simpan Data" ditekan , saya harap, adalah mudah difahami

<Child v-for="count in btnNumber" :key="count" @showData="getElements" />

<v-btn
  color="primary"
  elevation="10"
  class="space"
  large
  @click="duplicateEl"
  >Add Categ & Key</v-btn
>
v-btn
      color="secondary"
      elevation="13"
      class="btnEl"
      dark
      large
      @click="getResult"
      >Save Data</v-btn

** Ia menggunakan Emit untuk mendapatkan data daripada komponen anak saya

methods:{
               getElements(emitPayload) {
              this.selectedChildCategory = emitPayload.selectedCateg;
              this.selectedChildKey = emitPayload.selectedKey;
              this.selectedChildLanguage = emitPayload.selectedLang;
              this.selectedChildContent = emitPayload.selectedCon;
        }
    }
 duplicateEl() {
  this.btnNumber++;
}
P粉832212776P粉832212776291 hari yang lalu483

membalas semua(2)saya akan balas

  • P粉092778585

    P粉0927785852024-03-28 10:14:38

    Cuba simpan data dari mana peristiwa itu dipancarkan (daripada mendapatkan elemen) kepada tatasusunan pembolehubah data baharu dan gunakan tatasusunan itu

    
        sssccc

    balas
    0
  • P粉418214279

    P粉4182142792024-03-28 09:10:08

    Anda boleh menyimpan data pada komponen induk, sila lihat coretan kod berikut:

    Vue.component('Child', {
      template: `
      
        
          
            
              
              
              
              
              
              
              
              
              
              
            
          
        
      
      `,
      props: ['conte'],
      data() {
        return {
          content: this.conte,
          categories: ['first', 'second', 'third'],
          keys: [1,2,3],
          langs: ['g', 'h', 'j'],
          contents: ['aaa', 'bbb', 'ccc']
        }
      },
      methods: {
       setD() {
          this.$emit('show', this.content);
        },
      },
    })
    
    new Vue({
      vuetify: new Vuetify(),
      el: "#app",
      data() {
        return {
          contentFields: [{id: 0, cat: '', key: '', lang: '', cont: ''}],
          showData: false
        }
      },
      methods: {
        addInput() {
          let newI = this.contentFields.length 
          this.contentFields.push({id: newI, cat: '', key: '', lang: '', cont: ''})
        },
        getElements(e){
          const newData = this.contentFields.map(obj => {
            if(obj.id === e.id) 
               return { ...obj }
            return obj
          });
        },
        getResult() {
          this.showData = !this.showData
        }
      }
    })
    
      
      [email protected]/css/materialdesignicons.min.css" rel="stylesheet">
      [email protected]/dist/vuetify.min.css" rel="stylesheet">
      
    
    
      
    Add Categ & Key Save Data
    {{ contentFields }}
    sssccc sssccc

    balas
    0
  • Batalbalas