我开始使用Meteor,并调整todo example以包含嵌套标记组。我有以下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
的值? (即来自每个循环外部的数据)。
目前我有以下代码,但this
对象只允许我访问name
和count
。
Template.tag_filter.events({
'mousedown .tag': function () {
console.log('tag mousedown', this);
// How do I get the value of tag_name?
}
});
如您所见,我已使用Handlebars parent paths添加包含该名称的data-taggroup
属性,但我不确定如何从事件处理程序中访问该属性。
我认为this question是相关的,但我不理解OP的解决方案(部分是因为我没有使用Coffeescript)。还有一个closed Meteor issue是相关的。
答案 0 :(得分:10)
我找到了访问父数据的解决方案:
Template.nestedTemplate.events({
'click a.class':function(event,template){
var parentID = template.data._id;
console.log(parentID);
}
});
.events处理函数接收两个参数:event,包含事件信息的对象,以及模板,定义处理程序的模板的模板实例。我花了很长时间才弄明白这一点。不要使用车把解决方案,它会显示您的数据!
答案 1 :(得分:3)
我不确定您是否可以获取父模板数据,但在您的事件处理程序中,您可以访问DOM元素: event.currentTarget 将获取单击的元素。然后使用jQuery访问属性。如果需要, event.currentTarget.parentNode 将获取DOM中的父元素。
Ex:我不知道你把标记类放在哪里,但是让我们说它是div的类,其中定义了data-taggroup。然后你可以使用:
获取标签名称$(event.currentTarget).attr('data-taggroup')
答案 2 :(得分:0)
}
else {
var response = anonFunction();
while($.activeAJAX().length !== 0) // <<< something like this
// will do nothing and wait.
}