以前はeach
のループ内で@first
とか@last
を使えたようなのですが、現在(2015年2月10日時点)では使えなくなっています。
indexを取る方法といえばこれしかありません
templates/items.hbs
{{#each item in items}}
index: {{_view.contentIndex}}
{{/each}}
この_view
とかprivate感バリバリであんまり使いたくないんですけど…。
arrayを回してlink-to
して最後以外はコンマを出力したかったので大分悩みました。
たどり着いた方法はこれです
templates/items.hbs
{{#each item in items}}
{{link-to item.name 'item' item}}{{unless-last ',' item items}}
{{/each}}
helpers/unless-last.js
Ember.Handlebars.helper('unless-last', function(str, item, array) {
var result = item === array[array.length - 1] ? '' : str;
return new Ember.Handlebars.SafeString(result);
})
出来てみれば案外あっさりでしたが、ハマると怖い。if
ヘルパーには引数を1つしか渡せないし、ブロックを渡すヘルパーはviewを作らなくちゃいけないので今回の場合はコンマ表示したいだけで大げさな実装です。
この方法を応用すればいろいろ出来そうです。
あー解決してよかった。