Reputation: 1108
I am creating a app using angularjs. I have Integrated multiple filters and search result according to filters.but I am unable to show message no result when filter returns no result. Here is my code:
<div dir-paginate="partners in partnersData|orderBy:orderByField:reverseSort|filter:partners.name|filter:partners.website|filter:partners.location|itemsPerPage: pageSize" current-page="currentPage">
<div class="rowDiv">
<div class="cellDiv"><span ng-click="makeFavourite(partners)" class="star_rating" ng-class="{'select':partners.select}"></span> <span ng-click="showImage($index)"></span></div>
<div class="cellDiv" ng-click="showName($index)">{{partners.name}}</div>
<div class="cellDiv">{{partners.website}}</div>
<div class="cellDiv">{{partners.location}}</div>
<div class="cellDiv">{{partners.service}}</div>
<div class="cellDiv">{{partners.connection}}</div>
<div class="cellDiv">{{partners.action}}</div>
<div class="cellDiv lastCell"><span class="icon_pluse" ng-click="openPlus($index)"></span><span class="icon_info" ng-click="openInfo($index)"></span></div>
<div ng-if="partnersData.length === 0">No Items Found</div>
</div>
Upvotes: 1
Views: 829
Reputation: 171679
As of angular 1.4 you can create an alias for filtered array using as aliasName
that will be added to current scope. It is important that as
comes after all filters in the expression
<div dir-paginate="partners in partnersData|orderBy:...|...| lastFilter as filteredArray">
</div>
<!-- Outside paginate directive -->
<div ng-if="!filteredArray.length">No results</div>
Upvotes: 5
Reputation: 2755
you are checking if partnersData's length is 0, which will not occur if filtered. Instead assign the filtered items to a new variable:
<div ng-repeat="partners in filtered = (partnersData | orderBy:orderByField:reverseSort|filter:partners.name|filter:partners.website|filter:partners.location|itemsPerPage: pageSize)">
</div>
then check filtered.length
Upvotes: 0