Javascript Meteor:获取循环模板的级别信息

Javascript Meteor:获取循环模板的级别信息,javascript,meteor,Javascript,Meteor,我使用一个“循环”模板来显示元素及其子元素。因此,如果结构为三层深,则loopIt模板将使用三次 <template name="main"> {{ < loopIt }} </template> <template name="loopIt"> {{#each elements}} {{title}} {{level}} {{ > loopIt }} {{/each}} </temp

我使用一个“循环”模板来显示元素及其子元素。因此,如果结构为三层深,则loopIt模板将使用三次

<template name="main">
    {{ < loopIt }}
</template>

<template name="loopIt">
    {{#each elements}}
        {{title}} {{level}}
        {{ > loopIt }}
    {{/each}}
</template>
你能试试这个吗

首先,定义一个帮助器,在递归深入时增加级别

Template.loopIt.helpers({
  add: function(level) {
    return level + 1;
  }
});
然后在模板中传递当前级别,并在进入下一个递归级别时使用定义的帮助器将其递增

<template name="main">
    {{ < loopIt level = 0}}
</template>

<template name="loopIt">
    {{#each elements}}
        {{title}} {{../level}} 
        {{ > loopIt level = (add ../level)}}
    {{/each}}
</template>

{{loopIt level=(add../level)}
{{/每个}}

请注意,在
每个
循环中,都会丢失父上下文。为了再次访问父上下文,必须在变量
级别
前面加上
。/

您的数据模型上没有级别吗?与Blaze或“自定义脏把戏”相比,从您的数据中处理它更容易。我使用的是带有父引用的模型树结构。所以我没有等级信息。仅引用每个元素的下一个父元素:-(是否生成树?如果是,我将在构建每个节点时添加级别信息)。
<template name="main">
    {{ < loopIt level = 0}}
</template>

<template name="loopIt">
    {{#each elements}}
        {{title}} {{../level}} 
        {{ > loopIt level = (add ../level)}}
    {{/each}}
</template>