这是非常基本的,但我花了几个小时试图弄清楚为什么我似乎无法在我的模板的#each 循环中使用 Handlebars 的内置 #if 帮助程序。第二次我插入对 {{#if}} 的引用,Chrome(或 Safari)崩溃,控制台报告:
Uncaught RangeError: Maximum call stack size exceeded
meta
targetSetFor
sendEvent
Ember.Evented.Ember.Mixin.create.trigger
Ember.CoreView.Ember.Object.extend.trigger
newFunc
(anonymous function)
Ember.View.Ember.CoreView.extend.invokeRecursively
newFunc
(重复多次)
为什么这会导致我在 Ember 中出现递归错误?
<div id="gridChannelListDiv" tabindex="0">
{{#each item in content}}
{{#if item.hilight}}
<div class="gridCellHilight">
...
</div>
{{else}}
<div class="gridCell">
...
</div>
{{/if}}
{{/each}}
</div>
即使 {{#if}} 语句什么都不做,也会发生这种情况。
<div id="gridChannelListDiv" tabindex="0">
{{#each item in content}}
{{#if}}{{/if}} // this line will cause instant "oh snap" crash
<div class="gridCell">
{{item.name}}
</div>
{{/each}}
</div>
关联的 ArrayController 在“内容”中包含 5 个 Ember 对象的简单列表,并且模板可以正常工作,直到我插入 #if。莫名其妙。