我正在尝试实现可扩展的帖子评论的层次结构,例如 Quora,以便用户可以单击评论并查看任何回复。
为此,我想跟踪每个“评论”模板实例是否“扩展”,切换事件处理程序中的状态。
我可以使用整个堆栈会话变量(即每个评论一个)来做到这一点,但这似乎很笨拙,因为在任何给定页面上都有任意数量的评论。
下面是我目前正在尝试的一个片段。
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 在事件映射中是只读的。
有没有办法直接修改事件映射中的模板实例?