ユーザーがコメントをクリックして返信を表示できるように、Quora などのような展開可能な投稿コメントの階層を実装しようとしています。
この目的のために、各「コメント」テンプレート インスタンスが「展開」されているかどうかを追跡し、イベント ハンドラーで状態を切り替えたいと考えています。
スタック全体のセッション変数 (つまり、コメントごとに 1 つ) を使用してこれを行うこともできますが、任意のページに任意の数のコメントがあるため、これは扱いにくいようです。
以下は、私が現在試しているもののスニペットです。
JS:
Template.comment_item.events = {
'click #comment-content': function( e, instance ) {
this.expanded = true; // also tried instance.data.expanded = true
}
};
Template.comment_item.helpers({
showChildComments: function(){
this.expanded;
}
});
HTML:
<template name="comment_item">
<li class="comment comment-displayed" id="{{_id}}">
<div class="comment-body">
<div id="comment-content">
<!-- some comment data here -->
</div>
{{#if showChildComments}}
<ul class="comment-children comment-list">
{{#each child_comments}}
{{> comment_item}}
{{/each}}
</ul>
{{/if}}
</div>
</li>
</template>
残念ながら、ステップスルーすると、showChildComments ヘルパーで、テンプレート インスタンスが展開された変数を認識できないようです。ドキュメントで、instance.data はイベント マップで読み取り専用であると書かれていることに気付きました。
イベント マップ内のテンプレート インスタンスを直接変更する方法はありますか?