1

表示するオブジェクトのグリッドがあります。グリッドの各行には、4つのオブジェクトが表示されます。オブジェクトがグリッド内のどこにあるかに応じて、特定のクラスをオブジェクトの要素に配置する必要があります。たとえば、グリッドの最後のオブジェクトには、クラス「last_in_grid」が必要です。この計算は、配列内のオブジェクトのインデックスに依存します。

私のテンプレートは次のようになります:

{{#each row in objects}}
    {{#each object in row}}
        {{view MyApp.MyView objectBinding="object"}}
    {{/each}}
{{/each}}

MyApp.MyVieweachヘルパーの反復のインデックスを知る必要があります。

理想的には、次のようなものが必要です。

{{#each row in objects}}
    {{#each object in row}}
        {{view MyApp.MyView objectBinding="object" indexBinding="index_of_each_loop"}}
    {{/each}}
{{/each}}

Djangoのテンプレート言語はこれを行うことができます:

{% for item in items %}
    {% if forloop.counter0 == 0 %}
        blah blah blah
    {% endif %}
{% endfor %}

https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#for

これはEmberとハンドルバーを使用して可能ですか?

これを行うには、のカスタムバージョンを作成eachする必要がありますか?

4

2 に答える 2

2

CollectionViewを使用する場合、そのコレクションのアイテム/ビューはそれをクエリして、それらが最後のアイテムであるかどうかを確認できます。

フィドル: http: //jsfiddle.net/qKXJt/138/

ArrayControllersは、Ember配列であるコンテンツの単なるプロキシです。これは、Enumerable、Array、MutableArrayなどに付属するすべての機能を利用できることを意味します。

于 2012-09-22T01:34:10.950 に答える
2

ヘルパーの代わりに、{{each}}ヘルパーを使用{{collection}}して、次のような反復の現在のインデックスを取得できます。

http://jsfiddle.net/secretlm/67GQb/73/

HTML:

{{#collection contentBinding="App.peopleController"}}    
    {{#view App.PersonView personBinding="content" indexParentBinding="contentIndex" }}
        <td>{{indexParent}}</td> 
        <td>{{person.fullName}}</td>            
    {{/view}}
{{/collection}}

Javascript:

App = Ember.Application.create();

App.Person = Ember.Object.extend({
    fullName: function() {
        return this.get('firstName') + ' ' + this.get('lastName');
    }.property('firstName', 'lastName') 
});

App.peopleController = Ember.ArrayController.create({
    content: [App.Person.create({ firstName: "Yehuda", lastName: "Katz" }),
    App.Person.create({ firstName: "Tom", lastName: "Dale" })]
});

App.PersonView = Ember.View.extend({
    tagName: 'tr',
    indexParent: null    
});​
于 2012-09-22T02:27:59.077 に答える