2017-01-28 2 views
1

У меня есть массив исходя из моей модели ..Ember фильтровать список по имени свойства

[ 
    {id: 1, name: 'test1', created: true}, 
    {id: 2, name: 'test2', created: false}, 
    {id: 3, name: 'test3', created: true} 
] 

Я заинтересован, показывая два списка. Я создал компонент для отображения списка:

../components/created.hbs 

<div> 
    {{model.name}} 
</div> 

../main.hbs 

<h2> Created true </h2> 

{{#each}} 
    {{created model=model }} 
{{/each}} 


<h2> Created false </h2> 

{{#each}} 
    {{created model=model }} 
{{/each}} 

Первый список был бы показать объекты с созданным свойством, установленным в истинный и второй покажет те, с созданным свойством, установленным в ложь ,

Мне было интересно, был ли простой способ сделать это в Ember, как в Angular, где вы могли бы использовать каналы фильтра внутри каждого блока.

ответ

1

each синтаксис в ember.js:

{{#each list as |item|}} 
    do what you want with item... 
{{/each}} 

Первый вариант:

Таким образом, вы можете написать helper имени filterBy, чем использовать его:

{{#each (filterBy list key value) as |item|}} 
    do what you want with item... 
{{/each}} 

Второй вариант:

Вы можете написать computed property имени filteredList в компоненте, который использует Ember.computed.filterBy:

{{#each filteredList as |item|}} 
    do what you want with item... 
{{/each}} 

И является приемлемым для ember.js. Обычно я предпочитаю второй, поскольку он имеет функцию фильтрации в компоненте и не нуждается в другой зависимости.

Смежные вопросы