访问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') });
请注意,关于@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。