Ember在比较部门似乎相当缺乏。您只能使用#if帮助程序与零进行比较,并且人们编写的所有酷扩展帮助程序都不能与@index ...一起使用,因此您无法执行类似
的操作{{#each}}
{{#xif '@index == 3'}}
....
{{/xif}}
{{/each}}
将提供专业化(对于@index == 3)。
有谁知道如何基本上做到这一点?我有一个循环,但我需要专注于某些索引。
理想情况下,switch语句会很好(可能会破解把手来添加它吗?)
e.g,
{{#each}}
{{#switch @index}}
{{case 0}}
....
{{/case}}
{{case 1}}
....
{{/case}}
{{default}}
....
{{/default}}
{{/switch}}
{{/each}}
等...
现在我不得不使用jquery专门化循环,这会导致不一致的体验。
答案 0 :(得分:6)
在前面,我同意,比较一下是否真棒,但由于你在模板中放置了太多的逻辑,所以它的权力是对的。"
可以使用_view.contentIndex
http://emberjs.jsbin.com/mugokaka/1/edit
切换只是if语句的语法糖,所以它仍然可以完成,但同样,它不是一个比较,只是简单,有点难看。
{{#if statementOne}}
foo 1
{{else}}
{{#if statementTwo}}
foo 2
{{else}}
//yadda
{{/if}}
{{/if}}
他们通常建议将逻辑放在控制器中,让它返回一个真实的声明。
答案 1 :(得分:2)
您现在可以使用else if
链接其他块。虽然看到Kingpin2k的答案。
{{#if isAtWork}}
Ship that code!
{{else if isReading}}
You can finish War and Peace eventually...
{{/if}}
http://emberjs.com/blog/2015/02/07/ember-1-10-0-released.html#toc_chained-else-blocks
答案 2 :(得分:0)
Ember / Handlebars限制了模板中可用的逻辑,这是出于非常明确的哲学原因,符合其对许多事物的规定性方法。它认为模板不应该充斥着计算和其他类似业务的逻辑。
在模板中或者用任何语言编写开关的冲动,已经被认为是一种代码味道"。它通常表明代码中的某些内容未被正确分解/构造。您可能需要将控制器和/或视图分解为更细粒度的子类,或者只是将此开关/案例逻辑放入控制器或视图中,这样做会更好。更易于阅读和维护。你没有给出任何你想要使用开关/盒子的例子;如果你有,也许有人可以进一步评论处理它的好方法。