2017-02-15 3 views
0

私はこの周りに頭を抱えようとしていますが、私はきれいな解決策を見つけることができません。私は、このモデルだ:Ember each、表示リスト、属性のグループ見出しを追加

// models/person.js 
export default DS.Model.extend({ 
    birthDate: DS.attr('date'), // e.g. ISO date => 1.2.1990 
    name: DS.attr('string'), // e.g. John Doe 
    birthYear: Ember.computed('birthDate', function() { 
    return this.get('birthDate').getFullYear(); // => 1990 
    }) 
}); 

を、私はpersons.hbsはこのようにそれを表示したい:だから基本的に私はすべての人のリストがそれぞれ誕生年で分離することにしたい

<h4>1990</h4> 
<ul> 
<li>John Doe</li> 
<li>Jane Doe</li> 
</ul> 
<h4>1989</h4> 
<ul> 
    <li>Jack Doe</li> 
</ul> 
<h4>1988</h4> 
<ul> 
<li>Jim Smith</li> 
<li>Jack Smith</li> 
</ul> 

。私はどんなアイデアにも感謝しています!

答えて

0

私はちょうどそのことを行うnpmパッケージがあることを知りました。

https://www.npmjs.com/package/ember-group-by

+0

にこれは、よりhttps://github.com/DockYard/ember-composable-helpersでください。 –

1

this

groupedResults: function() { 
    var result = []; 

    this.get('content').forEach(function(item) { 
    var hasType = result.findBy('type', item.get('type')); 

    if(!hasType) { 
    result.pushObject(Ember.Object.create({ 
     type: item.get('type'), 
     contents: [] 
    })); 
    } 

    result.findBy('type', item.get('type')).get('contents').pushObject(item); 
    }); 

    return result; 
}.property('content.[]') 

を見て、テンプレート

{#each groupedResults} 
    <h1>{{type}}</h1> 
    {{#each contents}} 
    <!-- assuming it has a name --> 
    {{name}} 
    {{/each}} 
{{/each}} 
関連する問題