在 ember 中的 #each 助手中找到最后一个元素
Find last but one element in #each helper in ember
在我的 ember 应用程序中,我想以不同的方式显示数组的最后一个元素。
{{#each item in model}}
{{#if lastButOneItem}}
+ {{item}}
{{else}}
{{item}} +
{{/if}}
{{/each}}
但我不确定如何为 lastButOneItem 添加条件。有没有简单的方法可以实现?
我尝试为此分配一个 ItemController。但是我无法从该项目控制器和当前索引中获取元素总数。
请帮忙。
在 Ember 中有多种方法可以解决这个老问题,但在 CSS 级别处理它可能最容易:
{{#each item in model}}
<span class="item">{{item}}</span>
{{/each}}
.item ::after { content: " + "; }
.item:nth-last-child(2) ::after { content: ""; }
.item:nth-last-child(2) ::before { content: " + "; }
另一种方法是在您的控制器或视图或组件中构建一个字符串数组:
displayItems: function() {
var model = this.get('model');
var len = model.length;
return model.map(function(item, idx) {
return idx === len - 2 ? " + " + item : item + " + ";
});
} . property('model.@each')
{{#each item in displayItems}}
{{item}}
{{/each}}
在我的 ember 应用程序中,我想以不同的方式显示数组的最后一个元素。
{{#each item in model}}
{{#if lastButOneItem}}
+ {{item}}
{{else}}
{{item}} +
{{/if}}
{{/each}}
但我不确定如何为 lastButOneItem 添加条件。有没有简单的方法可以实现?
我尝试为此分配一个 ItemController。但是我无法从该项目控制器和当前索引中获取元素总数。
请帮忙。
在 Ember 中有多种方法可以解决这个老问题,但在 CSS 级别处理它可能最容易:
{{#each item in model}}
<span class="item">{{item}}</span>
{{/each}}
.item ::after { content: " + "; }
.item:nth-last-child(2) ::after { content: ""; }
.item:nth-last-child(2) ::before { content: " + "; }
另一种方法是在您的控制器或视图或组件中构建一个字符串数组:
displayItems: function() {
var model = this.get('model');
var len = model.length;
return model.map(function(item, idx) {
return idx === len - 2 ? " + " + item : item + " + ";
});
} . property('model.@each')
{{#each item in displayItems}}
{{item}}
{{/each}}