2016-06-23 2 views
0

Если массив элементов отфильтрован и нет элементов, которые соответствуют Мне хотелось бы показать «Нет элементов».Угловой фильтр, если нет товаров показать текст

vm.items = [ 
    {name: '1', type: 1}, 
    {name: '2', type: 2}, 
    {name: '1.2', type: 1}, 
]; 

<ul> 
    <li ng-repeat="item in vm.items | filter: {type:1}> 
    {{item.name}} 
    </li> 
    <li ng-repeat="item in vm.items | filter: {type:1} ?? length === 0> 
     No items 
    </li> 
</ul> 
+0

почему downvote? –

ответ

2

Здесь вы можете использовать ng-if директиву с filtered.length данными ng-repeat с псевдонимом

<ul> 
    <li ng-repeat="item in vm.items | filter: {type:1} as filtered"> 
    {{item.name}} 
    </li> 
    <li ng-if="!filtered.length"> 
     No items 
    </li> 
</ul> 
+0

Есть 10 предметов, из которых 5 типов = 1. Ваш ответ будет прав только тогда, когда все предметы имеют тип 1. –

+0

@ RalfdeKleine проверить обновленный ответ пожалуйста, downvoter посмотрите обновленный ответ –

+0

проверить обновленный ответ –

1

Вот аккуратный трюк, чтобы вспомнить количество фильтров:

<ul> 
    <li ng-repeat="item in (filtered = vm.items | filter: {type:1})> 
    {{item.name}} 
    </li> 
    <li ng-if="filtered.length == 0"> 
     No items 
    </li> 
</ul> 
+0

Хорошо, это отвечает на мой вопрос :) –

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