Ich bin nicht wirklich sicher, ob ich die Funktionsweise von Observablen richtig verstehe und wie man Referenzen von eingehängten Tags bekommt. Ich habe eine Komponente. Innerhalb dieser Komponente haben wir eine Komponente und eine Komponente. Der Zweck besteht darin, eine Kopplung zwischen Komponenten zu vermeiden. Aus diesem Grund möchte ich, dass meine Suchkomponente ein Ereignis auslöst, wenn eine Suche abgeschlossen ist (eine Schaltfläche wird geklickt). Dieses Ereignis sollte von der Komponente abgefangen werden, die die Sammlungsdaten basierend auf der Suche filtert.RiotJS - Wie können Ereignisse mit einem Observable-Muster zwischen Untertags übergeben werden?
Die Datei index.html mit Hilfe der Tag laden:
index.html
riot.mount(".content", "page", null);
Die Seite wie folgt definiert ist:
page.js
<page>
<!-- Search tag controls -->
<search id="searchTag"></search>
<!-- Collection data to display -->
<collection id="collectionTag"></collection>
</page>
Search.js
var self = this;
riot.observable(self);
<!-- This function is called when the user click on the button. -->
self.filtering = function()
{
<!-- We get data from inputs -->
var info = Getting data from inputs;
<!-- Trigger the event hoping that someone will observe it -->
self.trigger("filterEvent", info);
}
Wie kann ich die Komponente für dieses Ereignis beobachten machen:Die Komponente Skript wird wie kurz definiert?
Ich scheint es, dass ich in der Lage sein sollte, Referenzen von Such Tag und Sammlung Tag in dem page.js zu bekommen. Dadurch konnte ich die Ereignisse wie folgen an:
searchComponent = riot.mount('search');
collectionComponent = riot.mount('collection');
searchComponent.on('filterEvent', function()
{
<!-- Trigger function to filter collection data -->
collectionComponent.trigger('filterData');
});
Im Moment kann ich es nicht so funktioniert.
Zum Zeitpunkt der Ausführung sind searchComponent und collectionComponent nicht definiert.
ich auch versucht Referenzen dieser Komponente erhalten durch die Verwendung this.searchTag
und this.collectionTag
statt sie zu Montage aber zum Zeitpunkt der Code ausgeführt wird, haben die Komponenten nicht montiert worden ist und so nicht, daß ich ihnen einen Verweis erhalten.
Irgendwelche Ideen, damit es funktioniert?
Beachten Sie, dass Sie nicht brauchen, als auch riot.observable (Selbst-) auf Krawall Tags zu nennen, wie Sie dies nicht tun müssen sie mounten, wenn sie Kinderelemente eines anderen Riot-Tags sind. Sie müssen nur das Root-Tag mounten. – gius