Gestalten Sie die Oberflächenansicht des Komponenteneditors des Shopware Management CMS neu
<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>