Gestalten Sie die Oberflächenansicht des Komponenteneditors des Shopware Management CMS neu
P粉797855790
2023-08-14 12:07:32
<p>Beim Erstellen eines neuen CMS-Elements zur Verwendung im WYSIWYG-Editor haben wir drei Komponenten: eine mit dem Namen <code>component</code> und eine weitere mit dem Namen <code> ;code>previewComponent</code>. </p>
Die <p><code>configComponent</code> wird offensichtlich verwendet, um die Konfiguration des Elements auszuwählen, während die <code>component</code>-Komponente verwendet wird, um die Ansicht im Editor zu aktualisieren. Zeigen Sie beispielsweise den im Konfigurationsabschnitt ausgewählten Inhalt an. Mein Problem ist, dass die Ansicht im Editor erst aktualisiert wird, nachdem der Benutzer auf die Schaltfläche „Speichern“ geklickt hat, was zu einer schlechten Benutzererfahrung führt – die Aktualisierung sollte in Echtzeit erfolgen. </p>
<p><strong>Ich glaube, ich muss irgendwie ein Update-Ereignis <code>$emit</strong> aussenden, nachdem ich die Entitäts-ID aus <code>configComponent</code> ausgewählt habe ID der ausgewählten Entität zur <code>Komponente</code> </p>
<p>Also, im Zweig von <code>component</code> habe ich den folgenden Code: </p>
<pre class="brush:js;toolbar:false;"> <config-component @entity-picked="entityPickedHandler" />
</pre>
<p>Nach meinem Verständnis der Dokumentation sollte dies aufgerufen werden, wenn das Ereignis <code>entity-picked</code> von <code>configComponent</code> ausgegeben wird ; „entityPickedHandler“-Methode. </p>
<p>Dies ist beispielsweise der Ereignishandler in <code>component</code>: </p>
<pre class="brush:js;toolbar:false;">methods: {
entityPickedHandler(data) {
console.log('Trigger-Ereignis:', Daten);
}
}
</pre>
<p>Dann geben Sie das Ereignis von <code>configComponent</code> aus: </p>
<pre class="brush:js;toolbar:false;">berechnet: {
myEntity: {
erhalten() {
return this.element.config.entity.value;
},
set(Wert) {
// this.$set(this.element.data, 'entityId', value);
this.element.config.entity.value = Wert;
console.log('Versuchen Sie, ein von der Entität ausgewähltes Ereignis auszugeben');
this.$emit('entity-picked', value);
}
}
}
</pre>
<p>Offensichtlich funktioniert dies nicht, da <code>console.log()</code> im <code>entityPickedHandler</code> Das Ereignis hätte jedoch ausgegeben werden müssen. </p>
Getter/Setter在作用域方面可能有些棘手。通常的做法看起来是正确的。也许可以尝试将实体存储在一个数据属性中,并在其上设置一个监听器。
更新
或者在
component
组件内部作为一个监听器:然后可以使用以下方式从
configComponent
更新数据:然后,在
configComponent
的twig文件中,myentity
方法用于sw-entity-single-select
的v-model
: