Hantar data daripada komponen ke subkomponen dalam vue 3
<p>Saya cuba melakukan ini dengan menghantar data daripada komponen induk saya <kod>formTelemarketing</kod> kepada komponen anak saya <kod>nAsignedCalls</code> ;kod> Laksanakan prop dalam prop: { daftar: Nombor },</code> /code> dan Dapatkan nilai daripada borang dan gunakan $emit untuk menghantar prop ke komponen saya</p>
<pre class="brush:php;toolbar:false;">this.$emit("registers", getCall(toRef(param_search,'param_search')))</pre>
<p>Dalam komponen anak yang terkandung dalam komponen induk saya, saya mempunyai: </p>
<pre class="brush:php;toolbar:false;"><div id="app5">
<nAsignedCalls @registers="getCall"></nAsignedCalls>
</div></pra>
<p>Dalam komponen anak lalai eksport saya, saya mempunyai prop:['register'] dan dalam komponen ini dalam jadual saya, saya mempunyai for-each yang sepatutnya mendapatkan semua data daripada prop ini...I Tiada ralat muncul dalam konsol tetapi saya tidak dapat memaparkan data saya</p>
<pre class="brush:php;toolbar:false;">{{ (daftar) ?
<template v-for="item daftar">
<tr>
<td>{{ item.id }}</td>
<td>{{ (item.name) ? item.name : '' }} </td></pre>
<p>Sebagai contoh, ini adalah struktur saya, saya mempunyai syarat untuk mengetahui sama ada pendaftaran telah diisi, sentiasa mengembalikan "vacio".</p>
<p>Ini ialah definisi prop saya dalam komponen kanak-kanak: </p>
<pre class="brush:php;toolbar:false;">eksport lalai defineComponent({
nama: 'nAsignedCalls',
props:['register'],</pre>
<p>API saya baik, dalam tab rangkaian konsol saya boleh menunjukkan respons ok <kod>{"data":[{"id":895,"name":"Aguilera Muriel Fatimas",< ;/ kod> saya mempunyai lebih banyak data...</p>
<p>Saya tidak tahu apa yang saya lakukan salah, saya baru menggunakan vue...</p>
<p>Terima kasih atas ulasan anda dan maaf atas bahasa Inggeris saya yang lemah</p>
<p><strong>Kemas kini</strong></p>
<p>Pertama, saya menggunakan API komposisi dalam projek saya. </p>
<p>Sekarang, dalam komponen anak saya, saya mentakrifkan acara saya</p>
<pre class="brush:php;toolbar:false;">// acara diperibadikan
const emitMyEvent = (event) =>
kembali {
keluarkan,
searchId,
carianNama,
carianTelefon,
edit,
getResults,
getPage,
emitMyEvent,
getCall
}</pre>
<p>Dalam app.js saya, saya mentakrifkan semula app5: </p>
<pre class="brush:php;toolbar:false;">const app5 = createApp({
komponen:{
nAsignedCalls
},
persediaan() {
const getCall = (event) => console.log('getCall(): ' + event.target.id);
kembali { getCall }
}
})
app5.mount('#app5')</pre>
<p>Tetapi apabila saya mengklik butang saya tidak dapat memaparkan apa-apa dalam web atau konsol</p>
<p><strong>Butang saya: </strong></p>
<pre class="brush:php;toolbar:false;"><input type="button" class="btn btn-dark" "></pre>
<p>Dengan semua skrip dalam komponen induk saya, saya mengklik butang dan memanggil fungsi itu.</p>
<p>使用父组件中的所有代码更新我的问题:</p>
<pre class="brush:php;toolbar:false;"><template>
<div class="bekas mt-3 bg-bayang putih bulat p-3">
<div class="baris justify-content-start mt-4">
<div class="col-md-6 ml-3">
<div class="kumpulan bentuk">
<div class="baris justify-content-center">
<pilih kelas="kawalan bentuk" name="teleoperator" id="teleoperator_select" pemegang tempat="Teleoperadora">
<pilihan tersembunyi>Teleoperadora</option>
</select>
</div>
</div>
</div>
</div>
<div class="baris justify-content-start align-item-center mt-4">
<div class="col-md-4">
<div class="form-item">
<jenis input="teks" nama="alamat" id="alamat" diperlukan>
<label untuk="alamat">Dirección</label>
</div>
</div>
<div class="col-md-4">
<div class="form-item">
<jenis input="teks" nama="bandar" id="bandar" diperlukan>
<label untuk="bandar">Ciudad</label>
</div>
</div>
<div class="col-md-4">
<div class="form-item">
<jenis input="teks" nama="cp" id="kod_pos" diperlukan>
<label untuk="pos_kod">Código Pos</label>
</div>
</div>
</div>
<div class="baris justify-content-center">
<jenis input="butang" class="btn btn-gelap" value="Buscar registros" @click="searchRegisters">
</div>
</div>
<div class="bekas mt-3 bg-bayang putih bulat p-3 ">
<div class="baris justify-content-center">
<div class="col-md-12">
<ul class="nav nav-pills">
<li class="nav-item">
<a class="pautan navigasi aktif" data-toggle="tab" href="#nasigned">Tiada asignadas</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#asigned">Asignadas</a>
</li>
</ul>
</div>
<div class="bekas" style="lebar: 95% !penting;">
<div class="tab-kandungan">
<div class="tab-pane fade-in" id="ditugaskan">
<div id="app4">
<asignedCalls></asignedCalls>
</div>
</div>
<div class="tab-pane fade-in aktif" id="nasigned">
<div id="app5">
<nAsignedCalls @registers="getCall"></nAsignedCalls>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<skrip>
import { onMounted, defineComponent, toRef } daripada 'vue';
import useNregister daripada '../composables/calls'
import assignedCalls daripada './roomBooss/asignedCalls';
import nAsignedCalls daripada './roomBooss/nasignedCalls';
eksport lalai defineComponent({
komponen: {asignedCalls, nAsignedCalls},
data(){
kembali{
item: [],
penomboran: {
halaman_semasa: 1,
},
daftar: 0,
}
},
props: { register: Number },
persediaan(props, { emit }, context) {
const emitMyEvent = (acara) => emit('mendaftar', acara);
var param_search = {};
const { getCall, deleteCalls, queryForKeywords, getResults, getItems } = useNregister()
function remove(id) {
deleteCalls(id)
}
fungsi carianId(tindakan) {
let id = document.getElementsByClassName('id_search')[0].value
const params = [tindakan, id];
queryForKeywords(params)
}
fungsi carianName(tindakan) {
let id = document.getElementsByClassName('name_search')[0].value
const params = [tindakan, id];
queryForKeywords(params)
}
carian fungsiTelefon(tindakan) {
let id = document.getElementsByClassName('phone_search')[0].value
const params = [tindakan, id];
queryForKeywords(params)
}
fungsi edit(tindakan) {
window.location.href = '/roomboss/telemarketing/call/'+action+"/edit";
}
function show(action) {
window.location.href = '/roomboss/telemarketing/call/'+action;
}
fungsi getPage(halaman){
getItems(halaman);
}
fungsi searchRegisters(){
alamat var = "";
var city = "";
var cp = "";
alamat = document.getElementById("alamat").nilai
jika( alamat != "" ) {
param_search["parameter"] = "alamat";
param_search["nilai"] = alamat;
}
bandar = document.getElementById("bandar").nilai
jika( bandar != "" ) {
param_search["parameter"] = "bandar";
param_search["nilai"] = bandar;
}cp = document.getElementById("postal_code").value
jika( cp != "" ) {
param_search["parameter"] = "cp";
param_search["nilai"] = cp
}
context.emit("mendaftar", getCall(toRef(param_search,'param_search')))
}
kembali {
keluarkan,
searchId,
carianNama,
carianTelefon,
edit,
menunjukkan,
getResults,
getPage,
getCall,
carianDaftar,
emitMyEvent
}
}
})
</script></pre>
<p><strong>Kemas kini</strong></p>
<p>Data yang saya hantar boleh dipaparkan dalam tab rangkaian, tetapi jadual saya kosong</p>
<pre class="brush:php;toolbar:false;"><tbody>
<template v-for="item daftar">
<tr>
<td>{{ item.id }}</td>
<td>{{ (item.name) ? item.name : '' }} </td>
<td>{{ (item.address) ?
<td>{{ (item.province) ?
<td>{{ (item.city) ? item.city : ''}} </td>
<td>{{ (item.cp) ?
<td>{{ (item.phone) ? item.phone : ''}} </td>
<td>
<span class="text-light" :class="item.status.class_span">
{{ (item) ? item.status.name : 'null' }}
</span>
</td>
<td>
<div class="hover-text">
<div class="ikon-tindakan">
<div class="baris justify-content-center">
<div class="col-md-6 offset-md-1">
<i class="fas fa-cog"></i>
</div>
</div>
</div>
<kelas div="tindakan bekas">
<div class="col-md-3">
<kelas butang="teks petua alat btn" id="edit" @click="edit(item.id)"><i class="fas fa-2x fa-edit"></i></button>
</div>
</div>
</div>
</td>
</tr>
</template>
</tbody></pre>
<p>我在组件<kod>nPanggilan Ditugaskan</kod>中的脚本,我尝试在untuk和<kod>emitMyEvent</code>和<中的脚本,我尝试在untuk和<kod>emitMyEvent</code>和<中;不和中;用<kod> mendaftar</kod></p> >
<pre class="brush:php;toolbar:false;"><script>
import useNregister daripada '../../composables/calls'
import { onMounted, defineComponent } daripada 'vue'
eksport lalai defineComponent({
nama: 'nAsignedCalls',
memancarkan: ['mendaftar'],
data(){
kembali{
item: [],
penomboran: {
halaman_semasa: 1,
},
newRegisters: Object.assign({}, this.registers),
}
},
persediaan(props, { emit }) {
const { getCall, deleteCalls, queryForKeywords, getResults, getItems } = useNregister()
function remove(id) {
deleteDates(id)
}
fungsi carianId(tindakan) {
let id = document.getElementsByClassName('id_search')[0].value
const params = [tindakan, id];
queryForKeywords(params)
}
fungsi carianName(tindakan) {
let id = document.getElementsByClassName('name_search')[0].value
const params = [tindakan, id];
queryForKeywords(params)
}
carian fungsiTelefon(tindakan) {
let id = document.getElementsByClassName('phone_search')[0].value
const params = [tindakan, id];
queryForKeywords(params)
}
fungsi edit(tindakan) {
window.location.href = '/roomboss/calls/'+action+"/edit";
}
fungsi getPage(halaman){
getItems(halaman);
}
// acara peribadi
const emitMyEvent = (acara) => emit('mendaftar', acara);
kembali {
keluarkan,
searchId,
carianNama,
carianTelefon,
edit,
getResults,
getPage,
emitMyEvent,
getCall
}
}
});
</skrip></pre></p>