访问emberjs中的#each索引

大家好,请检查附上的代码

http://jsbin.com/atuBaXE/2/

我试图使用{{@index}}来访问索引,但似乎没有编译。 我认为车把支持

{{#each item in model}} {{@index}} {{item}} {{/each}} 

这是不工作的,我不知道是否支持{{@index}}

我在用

Ember.VERSION:1.0.0 Handlebars.VERSION:1.0.0

谢谢

UPDATE

由于这个PR ,现在可以使用带有索引的每个助手,提前使用新的块params语法。 这是可用的金丝雀,并希望将在默认情况下在烬1.11

 {{#each model as |item index|}} <li> Index: {{index}} Content: {{item}} </li> {{/each}} 

现场采样

对于旧版本

你可以使用{{_view.contentIndex}}

 {{#each item in model}} <li> Index: {{_view.contentIndex}} Content: {{item}} </li> {{/each}} 

现场采样

不,在Ember版本的把手中不存在,一种方法是使用一个物品控制器并为其添加一个属性,说明它是第一个还是最后一个等等。

 App.IndexController = Ember.ArrayController.extend({ itemController: 'itemer' }); App.ItemerController = Ember.ObjectController.extend({ needs:['index'], isFirst: function(){ return this.get('color') === this.get('controllers.index.firstObject.color'); }.property('controllers.index.firstObject') }); 

http://emberjs.jsbin.com/aPewofu/1/edit

请注意,关于@index语法,截至2014年10月:

Ember不支持@index(或任何其他@datatypes属性)。

https://github.com/toranb/ember-template-compiler/issues/16#issuecomment-38823756

我喜欢@ kingpin2k的答案 – Ember Way是使用一个控制器来装饰一个模型,在这个上下文中,我们想通过添加一个索引属性来表示它在集合中的位置。

我做的稍微有点不同,通过为手头的任务构build一个单独的实例控制器集合:

 App.PostsIndexController = Ember.ArrayController.extend({ indexedContent: function() { get('content').map(function(item, index) { App.PostsItemController.create({ content: item, index: index }); }); }.property('content') }); App.PostsItemController = Ember.ObjectController.extend({ index: null }); 

如果您只是希望在视图中将索引显示为1索引值,那么也可以给CSS计数器一个镜头。 他们一直支持 IE 8。