フィルタリングされた配列に ngSwitch ディレクティブを追加し、その長さに応じて異なる HTML を表示できます。
jsFiddle .
HTML:
<div ng-app ng-controller="Ctrl">
Search: <input ng-model="searchText">
<div ng-init="filtered = (friends | filter:searchText)">
<div>{{(friends | filter:searchText).length}}</div>
<div ng-switch="(friends | filter:searchText).length">
<span ng-switch-when="0">Nothing was found</span>
<table id="searchTextResults" ng-switch-default>
<tr>
<th>Name</th>
<th>Phone</th>
</tr>
<tr ng-repeat="friend in filtered | filter:searchText">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
</tr>
</table>
</div>
</div>
JS:
function Ctrl($scope) {
$scope.searchText = "";
$scope.friends = [{
name: 'John',
phone: '555-1276'
}, {
name: 'Mary',
phone: '800-BIG-MARY'
}, {
name: 'Mike',
phone: '555-4321'
}, {
name: 'Adam',
phone: '555-5678'
}, {
name: 'Julie',
phone: '555-8765'
}];
}
もう 1 つのオプションは、コントローラーの friends 配列に $filter("filter") を直接適用することです。これにより、HTML マークアップが短縮されます。