オブザーバブルが機能する方法と、マウントされたタグから参照を取得する方法を正しく理解しているかどうかはよくわかりません。コンポーネントがあります。このコンポーネント内には、componentとcomponentがあります。目的は、コンポーネント間の結合を避けることです。そのため、検索が完了したとき (ボタンがクリックされたとき) に検索コンポーネントがイベントをトリガーするようにしたいと考えています。このイベントは、検索に基づいてコレクション データをフィルタリングするコンポーネントによってキャッチされる必要があります。
index.html ファイルは、次を使用してタグをロードします。
index.html
riot.mount(".content", "page", null);
ページは次のように定義されています。
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);
}
そのイベントをコンポーネントに監視させるにはどうすればよいですか?
page.jsのsearch タグとcollection タグから参照を取得できるはずです。そうすることで、次のようにイベントを接続できます。
searchComponent = riot.mount('search');
collectionComponent = riot.mount('collection');
searchComponent.on('filterEvent', function()
{
<!-- Trigger function to filter collection data -->
collectionComponent.trigger('filterData');
});
今、私はそれをそのように機能させることはできません。
実行時点では、searchComponent と collectionComponent は定義されていません。
これらのコンポーネントをマウントする代わりにthis.searchTag
andthis.collectionTag
を使用して参照を取得しようとしましたが、コードの実行時にコンポーネントがマウントされていないため、それらへの参照を取得できません。
それを機能させるためのアイデアはありますか?