Javascript 使用手柄访问嵌套阵列渲染中的父数据
我有以下数据结构:Javascript 使用手柄访问嵌套阵列渲染中的父数据,javascript,meteor,handlebars.js,Javascript,Meteor,Handlebars.js,我有以下数据结构: A : { "B": [ { "C":["Hello", "World"] } ] } A有一个属性B,它是一个数组。B的每个元素都有一个属性C,它也是一个数组 <template name="render"> {{#each B}} {{#each C}} <div class="clickme">{{this}}</div> {{/each}} {{/each}} </template>
A :
{
"B": [
{
"C":["Hello", "World"]
}
]
}
A有一个属性B,它是一个数组。B的每个元素都有一个属性C,它也是一个数组
<template name="render">
{{#each B}}
{{#each C}}
<div class="clickme">{{this}}</div>
{{/each}}
{{/each}}
</template>
您可以使用
。/
在您的情况下,假设您需要父元素的索引,那么:
{{@../index}
要访问父元素的另一个键(在您的情况下不适用):
{{{../key}
引用:
编辑:要从“click.clickme”事件处理程序访问父元素,我不知道从事件处理程序直接访问的方法,但一种可能的方法是在html中创建一个onclick事件,并调用一个函数,您可以将父元素(或其索引)作为参数传递给该函数。在函数中,set作为会话变量,然后可以在“click.clickme”事件处理程序中引用 模板:
<template name="render">
{{#each B}}
{{#each C}}
<div class="clickme" onclick="onclickfunction('{{@../index}}')">{{this}}</div>
{{/each}}
{{/each}}
</template>
在“click.clickme”事件处理程序中,获取会话变量:
Template.render.events({
"click .clickme" : function (event, template) {
//template.data == A
//Template.parentData(0) == A
//Template.parentData(1) == A
var parentelement = Session.get('indexofparent');
console.log(parentelement);//Shows index of B.
}
})
p.S.B的索引是一个字符串,使用pareseInt(parentelement)解析为整数。谢谢,但我想我还不够清楚:我想在“click.clickme”事件句柄中访问父级。我已经编辑了答案,请告诉我它是否有效,以及这里或那里是否有轻微语法错误,我没有尝试你的新答案,因为它甚至比我做的更粗糙。您依赖于事件处理程序在“onClick”函数之后执行。我所做的只是将div的
数据索引设置为@../index
,并通过$(event.currentTarget).data('index')
获取索引。如果你把这个写进你的答案,我会接受的。
onclickfunction = function(parentindex) {
Session.set('indexofparent',parentindex);
}
Template.render.events({
"click .clickme" : function (event, template) {
//template.data == A
//Template.parentData(0) == A
//Template.parentData(1) == A
var parentelement = Session.get('indexofparent');
console.log(parentelement);//Shows index of B.
}
})