Aktifkan mod dari kedai Nuxt 2 (vuejs).
P粉693126115
2023-09-02 21:26:44
<p>Saya perlu mengaktifkan komponen modal daripada kedai vuex. Apabila API hasil berjaya, saya menggunakan 'this.$refs['modalSuccess'].show()' untuk menunjukkan modal di dalam komponen! </p>
<p>Tetapi saya perlu menukar fungsi "sendLeadResponse" daripada kaedah (komponen) kepada operasi (storan). Selepas itu saya tidak boleh lagi mengaktifkan modal menggunakan 'this.$refs['modalSuccess'].show()' ini. </p>
<p>Adakah terdapat cara untuk memanggilnya dari kedai? </p>
<p>Ini ialah prosesnya:</p>
<ol>
<li>Butang: Aktifkan kaedah di dalam komponen;</li>
<li>Kaedah: Aktifkan tindakan daripada kedai;</li>
<li>Operasi: Ia menggunakan API luaran </li>
<li>Modal: Jika hasilnya normal, ia akan mengaktifkan modal di dalam komponen </li>
</ol>
<p><strong>Komponen dengan butang dan modal</strong></p>
<pre class="brush:php;toolbar:false;"><template>
<bahagian>
<kelas div="w-100 d-md-flex justify-content-md-end">
<Butang Kecil
smallButtonText="Quero ser cliente →"
@event="createLeadObject()"
id="tunjukkan-btn"
/>
</div>
<b-modal
ref="modalSuccess"
OK sahaja
> Obrigado pelo interestse!
</b-modal>
</div>
</section>
</template>
<skrip>
import SmallButton daripada '../SmallButton.vue'
eksport lalai {
nama: 'BeClientForm',
komponen: {
Butang Kecil
},
kaedah: {
createLeadObject(){
const dataLeadObject = {
tarikh: new Date(),
Nama penuh: this.lead.name,
e-mel: this.lead.email,
telefon: this.lead.phone,
komen: this.lead.comment
}
this.$store.dispatch('sendLeadResponse', dataLeadObject)
},
}
}
</script></pre>
<p><strong>商店的操作</strong></p>
<pre class="brush:php;toolbar:false;">tindakan: {
async sendLeadResponse({commit}, dataLeadObject){
const jsonDataObject = JSON.stringify(dataLeadObject)
tunggu ambil("http://localhost:5000/api/lead/leadResponse", {
kaedah: "POST",
pengepala: {"Content-type": "application/json"},
badan: jsonDataObject
})
.then((resp) => resp.json())
.then((data) => {
jika (data.error) {
commit('MESSAGE_RESPONSE', data.error)
}
lain {
commit('RESET_LEAD_RESPONSE')
!!!!!!!!!!! ini.$refs['modalSuccess'].tunjukkan() !!!!!!!!!!!!!! [is tidak berfungsi)
}
})
},
}</pre></p>
Kedai Vuex direka untuk hanya mementingkan keadaan. Ia tidak mempunyai akses langsung kepada komponen anda atau
this.$refs
. Perkara yang boleh anda lakukan ialah tetapkan keadaan dalam storan berdasarkan hasil yang anda perolehi dan pastikan komponen anda mengakses keadaan itu dan/atau mengembalikan janji daripada tindakan anda untuk menghantar hasilnya terus kepada komponen anda