Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用手柄访问嵌套阵列渲染中的父数据_Javascript_Meteor_Handlebars.js - Fatal编程技术网

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.
    }
})