添付のコードをご覧ください
{{@index}}を使用してインデックスにアクセスしようとしていますが、コンパイルされていないようです。ハンドルバーはそれをサポートすると思います
{{#each item in model}}
{{@index}}
{{item}}
{{/each}}
うまくいきません。{{@ index}}がサポートされているかどうかわかりません
使っています
[〜#〜] update [〜#〜]
this PR であるため、新しいヘルパー構文を使用して、各ヘルパーをインデックスで使用できるようになりました。これはカナリアで利用可能であり、うまくいけばember 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のバージョンのHandlebarsには存在しません。1つの方法は、アイテムコントローラーを使用し、最初または最後などのプロパティを追加することです。
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(または他の@dataタイププロパティ)をサポートしません。
https://github.com/toranb/ember-template-compiler/issues/16#issuecomment-38823756
私は@ kingpin2kからの答えが好きです-Ember方法はモデルを飾るためにコントローラを使用することであり、このコンテキストでは、その場所を表すインデックスプロパティを追加することによってそれを飾るコレクション。
手元のタスク用に装飾されたインスタンスコントローラーの個別のコレクションを構築することで、少し異なります。
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 Counters を指定することもできます。 サポート IE 8。