【发布时间】:2015-04-25 17:23:27
【问题描述】:
我试图有一个这样的递归模板:
<template name="generate">
{{#if elements}}
{{#each elements}}
<div>{{#if elements}}{{> generate}}{{/if}}</div>
{{/each}}
{{else}}
{{> generate elements=getElements}}
{{/if}}
</template>
使用助手:
Template.generate.helpers({
getElements: function() {
return Elements.find()
}
})
和“元素”数据对象:
[{
_id : "fgQ4GHrrZGFFGWPZQ",
elements" : [{
_id : "hY8iAYJC4KBwGKN84",
elements : []
}]
},{
_id : "rtMNfaQYwqzNTYqoD",
elements : [{
_id : "p2wJeGdtiGMYBQtpW",
elements : []
}]
}]
我遇到了键盘事件无响应且其他功能停止工作的问题。模板不是为处理这种递归而设计的吗?如果是这样,我会尝试一种不同的方法,但我认为这会奏效。其他人看到这个或有什么建议吗?谢谢!
编辑:这会起作用。我的问题是在“渲染”回调上设置键盘事件处理程序,该回调被多次调用(每次渲染模板时),这导致了我提到的问题。我会删除这个问题但stackoverflow。谢谢大家!
【问题讨论】:
-
我很确定模板可以处理递归,所以你可能有无限递归。请记住,空数组 (
[]) 是真实的。 -
自我注意:总是复制/粘贴而不是使用自己的话,所以不会出现愚蠢的拼写错误(empty arrays are falsy in #if-block in Spacebars,如下面的答案之一中提到的(有点))。
-
看起来这毕竟可以工作。我的代码中的其他地方有错误。感谢大家的帮助!
标签: templates recursion meteor meteor-blaze spacebars