Javascript 在emberjs中访问#中的每个索引
请查看所附代码 我试图使用{{@index}}访问索引,但似乎没有编译。我认为车把支持这一点Javascript 在emberjs中访问#中的每个索引,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,请查看所附代码 我试图使用{{@index}}访问索引,但似乎没有编译。我认为车把支持这一点 {{#each item in model}} {{@index}} {{item}} {{/each}} 它不适用于,我不知道{@index}是否受支持 我正在使用 版本:1.0.0 把手。版本:1.0.0 更新 因为,现在可以在索引中使用each-helper,同时使用新的block-params语法。这在金丝雀上可用,希望在ember 1.11中默认启用 {{#each model
{{#each item in model}}
{{@index}}
{{item}}
{{/each}}
它不适用于,我不知道{@index}是否受支持
我正在使用
- 版本:1.0.0
- 把手。版本:1.0.0
{{#each model as |item index|}}
<li>
Index: {{index}} Content: {{item}}
</li>
{{/each}}
不,它在Ember版本的Handlebar中不存在,一种方法是使用项目控制器并向其添加属性,说明它是第一个还是最后一个等等
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')
});
我喜欢@kingpin2k的答案——余烬方法是使用控制器装饰模型,在本文中,我们希望通过添加索引属性来装饰模型,以表示其在集合中的位置 我的做法略有不同,构建了一个单独的实例控制器集合,这些实例控制器是为手头的任务而设计的:
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
});
注意,关于@index语法,截至2014年10月: Ember不支持@index(或任何其他@data类型) 属性)
如果您只是想在视图中将索引显示为单索引值,您也可以试一试。它们可以追溯到IE 8。我认为你写的东西真的很棒,我相信任何人都会利用它。这两个控制器是否存在耦合过紧的危险?不是危险,而是缺乏可重用性。这一切都取决于用例。有没有办法获得1索引值?例如,对于n个项的数组,第一个项应返回1(不是0),最后一个项应返回n(不是n-1)。我认为唯一的方法是将模型包装在带有索引的计算属性中,如果每个块中的项目都被更新,例如通过更改其排序顺序来更新,则与此类似。contentIndex不会为所有项目更新,并可能导致不正确的索引值。徽标是否支持块语法
=作为|项索引|
的每个模型对我来说都不起作用。@loostro我创建了一个帮助器,它只是增加传入的数字,以获得基于1的索引:跟踪入:
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
});