2017-02-15 26 views
0

Я пытаюсь обвести вокруг себя голову, но я не могу найти чистого решения. Я получил эту модель:Ember each, display list, добавить заголовок группы для атрибута

// 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> 

Поэтому в основном я хочу, чтобы список всех лиц, которые должны быть разделены каждым годом рождения. Я благодарен за любые идеи!

ответ

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}}