我开始使用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>
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何调整事件处理程序以获取标签上的点击以访问父组的值tag_name?(即每个循环外部的数据).
目前我有下面的代码,但this对象只允许我访问name和count.
Template.tag_filter.events({
'mousedown .tag': function () {
console.log('tag mousedown', this);
// How do I get the value of tag_name?
}
});
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用了Handlebars父路径来添加data-taggroup包含该名称的属性,但我不确定如何从事件处理程序中访问它.
我认为这个问题是相关的,但我不理解OP的解决方案(部分原因是因为我没有使用Coffeescript).还有一个关闭的流星问题是相关的.
Mar*_*arz 10
我找到了访问父数据的解决方案:
Template.nestedTemplate.events({
'click a.class':function(event,template){
var parentID = template.data._id;
console.log(parentID);
}
});
Run Code Online (Sandbox Code Playgroud)
.events处理函数接收两个参数:event,包含事件信息的对象,以及模板,定义处理程序的模板的模板实例.我花了很长时间才弄明白这一点.不要使用车把解决方案,它会显示您的数据!
我不确定您是否可以获取父模板数据,但在事件处理程序中您可以访问 DOM 元素:event.currentTarget将获取单击的元素。然后只需使用 jQuery 来访问属性即可。如果需要,event.currentTarget.parentNode将获取 DOM 中的父元素。
例如:我不知道你把标签类放在哪里,但假设它是定义 data-taggroup 的 div 类。然后你可以使用以下方法获取标签名称:
$(event.currentTarget).attr('data-taggroup')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4874 次 |
| 最近记录: |