12

我开始使用 Meteor,并调整todo 示例以包含嵌套标记组。我有以下 HTML,它输出每个标签组的每个名称,以及每个组中的标签列表:

  <template name="tag_filter">
    {{#each tag_types }}
      {{ tag_name }}
      {{#each values }}
        <div data-taggroup="{{ ../tag_name }}">
        {{ name }} ({{ count }})
        </div>
      {{/each}} 
    {{/each}}
</template>

我的问题是:如何调整事件处理程序以点击标签以访问父组的值tag_name?(即来自外部每个循环的数据)。

目前我有下面的代码,但thisobject 只允许我访问nameand count

Template.tag_filter.events({
  'mousedown .tag': function () {
    console.log('tag mousedown', this);
    // How do I get the value of tag_name?
  }
});

如您所见,我使用Handlebars 父路径来添加data-taggroup包含名称的属性,但我不确定如何从事件处理程序中访问它。

我认为这个问题是相关的,但我不理解 OP 的解决方案(部分原因是我没有使用 Coffeescript)。还有一个相关的封闭流星问题

4

3 回答 3

10

我找到了访问父数据的解决方案:

Template.nestedTemplate.events({
    'click a.class':function(event,template){
        var parentID = template.data._id;
        console.log(parentID);
    }
});

.events 处理程序函数接收两个参数:event,一个包含事件信息的对象,以及 template,一个模板实例,用于定义处理程序的模板。我花了很长时间才弄清楚这一点。不要使用车把解决方案,它会显示您的数据!

于 2013-03-09T04:34:19.993 回答
3

我不确定您是否可以获得父模板数据,但在您的事件处理程序中您可以访问 DOM 元素:event.currentTarget将获得单击的元素。然后只需使用 jQuery 来访问属性。如果需要,event.currentTarget.parentNode将获取 DOM 中的父元素。

例如:我不知道你把标签类放在哪里,但假设它是你的 div 的类,其中定义了 data-taggroup。然后您可以使用以下方法获取标签名称:

$(event.currentTarget).attr('data-taggroup')
于 2012-10-26T21:33:15.327 回答
0
"click selected":function(e){
    // this._id
   var doc_id = $(e.currentTarget).parent().parent().attr("uid")
   console.log(doc_id) 
},
//specify the each id in the div above the nearest #each
//this will work in events but not in helpers`
于 2016-04-20T10:23:57.007 回答