Reka bentuk semula paparan antara muka editor komponen CMS pengurusan Shopware
P粉797855790
2023-08-14 12:07:32
<p>Dalam mencipta elemen CMS baharu untuk digunakan dalam editor WYSIWYG Shopware, kami mempunyai tiga komponen: satu bernama <code>component</code> dan satu lagi bernama <code> configComponent</code>, dan satu lagi bernama < ;code>previewComponent</code>. </p>
<p><code>configComponent</code> jelas digunakan untuk memilih konfigurasi elemen, manakala komponen <code>component</code> Sebagai contoh, paparkan kandungan yang dipilih dalam bahagian konfigurasi. Masalah saya ialah ia hanya mengemas kini paparan dalam editor selepas pengguna mengklik butang simpan, yang membawa kepada pengalaman pengguna yang buruk - ia harus dikemas kini dalam masa nyata. </p>
<p><strong>Saya rasa saya perlu entah bagaimana <kod>$emit</code>acara kemas kini</strong> selepas memilih id entiti daripada <code>configComponent</code>, Kemudian lulus ID entiti yang dipilih kepada komponen <kod>komponen</kod> </p>
<p>Jadi, dalam ranting <kod>komponen</kod>, saya mempunyai kod berikut: </p>
<pre class="brush:js;toolbar:false;"> <config-component @entity-picked="entityPickedHandler" />
</pra>
<p>Dari pemahaman saya tentang dokumentasi, ini harus dipanggil apabila acara <code>entiti dipilih</code> dipancarkan daripada <code>configComponent</code> ; kaedah "entityPickedHandler". </p>
<p>Sebagai contoh, ini ialah pengendali acara dalam <kod>komponen</kod>: </p>
<pre class="brush:js;toolbar:false;">kaedah: {
entityPickedHandler(data) {
console.log('Peristiwa pencetus:', data);
}
}
</pra>
<p>Kemudian, keluarkan acara daripada <code>configComponent</code>: </p>
<pre class="brush:js;toolbar:false;">dikira: {
myEntity: {
dapatkan() {
kembalikan this.element.config.entity.value;
},
set(nilai) {
// this.$set(this.element.data, 'entityId', value);
this.element.config.entity.value = nilai;
console.log('Cuba untuk memancarkan acara yang dipilih entiti');
this.$emit('entity-picked', value);
}
}
}
</pra>
<p>Jelas sekali, ini tidak berfungsi kerana <code>console.log()</code> dalam pengendali <code>entityPickedHandler</code> Walau bagaimanapun, peristiwa itu sepatutnya dipancarkan. </p>
Penetap/Penetap boleh menjadi agak rumit apabila melibatkan skop. Pendekatan biasa nampaknya betul. Mungkin cuba simpan entiti dalam sifat data dan tetapkan pendengar padanya.
Dikemas kini
Atau sebagai pendengar di dalam komponen
component
:Data kemudiannya boleh dikemas kini daripada
configComponent
menggunakan:Kemudian, dalam fail ranting
configComponent
的twig文件中,myentity
方法用于sw-entity-single-select
的v-model
, kaedahmyentity
digunakan dalamv-model
sw-entity-single-select
: