在Ember.js #each中生成循环计数器

时间:2012-09-08 14:51:44

标签: ember.js handlebars.js

我发现Ember.js中车把模板的限制绝对是严重的。你不能执行任意的JavaScript。你得到的只是一组固定的能力(if / else,each,action,view,outlet)以及在当前上下文对象上输出属性值的能力。

这意味着我无法弄清楚如何做一些像使用循环计数器一样简单的事情,例如,根据它在我正在迭代的集合中的位置,在循环内的html元素上拍打位置ID。

将它作为模型的计算属性添加是没有意义的,因为这不是模型级知识(同一模型可能在不同视图中的两个不同位置)。

仅供参考 - 在PostgreSQL上使用Ember-1.0-pre,Ember-Data和Rails以及ActiveModel :: Serializers。

3 个答案:

答案 0 :(得分:9)

使用handlebars.js(v.1.0.rc1)我可以这样做:

 {{#each links}}
   <li>{{@index}} - {{url}}</li>
 {{/each}}

答案 1 :(得分:3)

我建议你写一个把手助手,你可以在其中执行任意的javascript。看到 http://handlebarsjs.com举了一些例子。

或者,您可以在子视图(而不是模型)中包含位置ID。

答案 2 :(得分:2)

结果提供一个循环计数器是本页最后一个例子的确切主题:

http://handlebarsjs.com/block_helpers.html

(Dan G已经在他的回答中指出了“编写帮助”解决方案,但由于已经有一个已发布的示例,我想创建一个新的答案,以使链接更加突出。)