Rohvorlagen sind eine Leistungsoptimierung. Es existieren nur teilweise Ember-View-Funktionen; die Entfernung von Funktionen ist es, die sie schneller macht.
Daher verwenden wir hier ein anderes Muster für Erweiterbarkeit. Wir haben nicht den vollständigen Ember-Lebenszyklus.
Gibt es etwas Ähnliches wie setupComponent(args, component) auch für die rohen Outlets? Was ist mit berechneten Eigenschaften? Ich möchte einige Berechnungen basierend auf den Daten im Kontext durchführen. Wie gehe ich dabei vor? Ich weiß nicht einmal, ob ich meine begleitende .js.es6-Datei richtig benannt habe. Sollte sie .raw.js.es6 heißen?
Okay, ich habe die Lösung gefunden: Das Topic-Modell erweitern und dort eine berechnete Eigenschaft erstellen:
Ist es möglich, eine rohe Vorlage innerhalb einer Theme-Komponente mit entsprechendem JavaScript wie bei regulären Komponenten zu versehen?
Ich habe ein ziemlich herausforderndes Anwendungsszenario und muss Aktionen verwalten, um Argumente von einer tief eingebetteten Vorlage innerhalb der Themenliste zurück an die übergeordnete Komponentenkette weiterzuleiten.
Ich habe festgestellt, dass es mehrere .hbr-Dateien mit scheinbar entsprechenden JavaScript-Komponentenelementen im Discourse-Quellcode gibt, aber mir ist etwas Auffälliges aufgefallen, z. B.:
Das legt also nahe, dass hbs-Dateien keine zugrunde liegenden JavaScript-Dateien haben, es sei denn, sie werden durch eine solche Workaround-Technik unterstützt?
Dieser Observer ist nicht ideal, da wir im Rahmen der weiteren Verbesserungen von Ember versuchen, solche Observer zu vermeiden. Ich denke, ein besserer Ansatz besteht darin, einen Helper zu erstellen und den JavaScript-Code dort unterzubringen. Hier ist ein Beispiel:
In einigen neueren Arbeiten musste ich dafür sorgen, dass Teile des Template-“Baums” Daten von einem Blatt-Template nach oben weitergeben können, indem ich Schließungsaktionen verwende. Daher habe ich einige hbr-Dateien in hbs-Dateien umgewandelt, um dies zu unterstützen.
Die Arbeit ist experimentell, und ich bin mir bewusst, dass dies Auswirkungen auf die Leistung haben wird. Nach mehreren Iterationen des Designs konnte ich jedoch keine alternative Lösung finden, die innerhalb des Frameworks bleibt.
Kann man Funktionen nicht an einen Helper übergeben und dort aufrufen? Ich glaube nicht, dass ich das schon versucht habe, aber ich stelle mir vor, dass das möglich ist.
Spezifisch bestimme ich Eigenschaften eines Bildes in einer Leaf-Komponente und speichere sie dann als Eigenschaften des Großeltern-Elements, um ein Styling zu beeinflussen, das über das aktuelle Listen-Rendering hinaus bestehen bleiben muss. Die Daten müssen definitiv nach oben weitergegeben werden. Wenn ein Helper dies erreichen kann, klingt das nach einer guten Option, falls ich mit meinem aktuellen Ansatz nicht weiterkomme. Danke!