Angular js-如果ng repeat为空,则显示消息
Angular js - Show message if ng-repeat is empty
下面的AngularJS应用程序正在使用ng repeat和应用的筛选器。某个应用的过滤器不会留下任何值。如何显示通知?
js小提琴
HTML
<div >
<div data-ng-controller="myCtrl">
<ul >
<li data-ng-repeat="item in values | filter:filterIds()">
<code>#{{item.id}}</code> Item
</li>
</ul>
<p ng-show="!values.length">no vals with this filter</p>
<button ng-click="loadNewFilter()"> filter now</button>
</div>
</div>
AngularJS
var app = angular.module('m', []);
app.controller('myCtrl', function ($scope) {
$scope.values = [{
id: 1
}, ....
}];
$scope.filter = [1,2,3,4,5,6];
$scope.filterIds = function (ids) {
return function (item) {
var filter = $scope.filter;
return filter.indexOf(item.id) !== -1;
}
}
$scope.loadNewFilter = function (){
$scope.filter = [-1];
$scope.$apply();
}
});
我想这就是你想要的:
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope) {
$scope.values = [
{id: 1},
{id: 2},
{id: 3},
{id: 4},
{id: 5},
{id: 6}];
$scope.filter = [1,2,3,4,5,6];
$scope.filterIds = function (ids) {
return function (item) {
var filter = $scope.filter;
return filter.indexOf(item.id) !== -1;
}
}
$scope.loadNewFilter = function (){
$scope.filter = [1,5];
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<div data-ng-controller="myCtrl">
<ul>
<li data-ng-repeat="item in testValue=(values | filter:filterIds())">
<code>#{{item.id}}</code> Item
</li>
</ul>
<p ng-show="!testValue.length">no vals with this filter</p>
<button ng-click="loadNewFilter()"> filter now</button>
</div>
</div>
FIDDLE链接
这是另一个FIDDLE链接检查这也是
我会选择非常简单的CSS方法:
HTML:
<ul>
<li data-ng-repeat="item in values | filter:filterIds()"> <code>#{{item.id}}</code> Item</li>
<li class="no-items">There are no matching items.</li>
</ul>
CSS:
li + .no-items {
display: none;
}
所以基本上li.no-items
只有在没有其他LI
的情况下才可见,否则就隐藏起来。我认为这比在ngShow/ngHide
中多引入一个观察程序对性能更好。
演示:http://jsfiddle.net/z9daLbLm/5/
下面是一个工作示例:http://jsfiddle.net/z9daLbLm/2/
您可以将过滤结果保存在ng-repeat
中
<div ng-repeat="item in filteredValues = (values | filter:filterIds())">{{item}}</div>
结果存储在filteredValues
中然后在DOM 中使用此过滤值
<div ng-show="!filteredValues.length">No Items</div>
请参阅此处http://jsfiddle.net/ntofav3c/
更改此项:
<p ng-show="!values.length">no vals with this filter</p>
至:
<p ng-hide="values | filter:filterIds()">no vals with this filter</p>
请参阅以下工作jsfiddle:http://jsfiddle.net/z9daLbLm/4/我在你的<ul>
列表之前添加了这个代码
<div ng-if="(values|filter:filterIds()).length == 0">
List is empty
</div>
当过滤后的值长度为零时,它只显示"列表为空"文本。
有关更多信息,请参阅此链接:如何显示过滤后的ng重复数据的长度
我最近也遇到了同样的问题。。我在ng repeat中有三个过滤器和一个orderBy,想显示一些emptyList消息。。。。
上述解决方案不起作用。。所以我自己做了一个。
- 将emptymsg作为背景div,将mainContainer作为顶部div
- emptyMsgdiv将始终显示,所以只要列表中没有值。。emptyMsg将是唯一显示的div。附言:代码片段不会运行。。因为没有添加附加库。。这只是给你一个想法!
//empty msg.... .emptyMsg{ position: absolute; left: 0;right: 0; margin: auto; color: gray; text-align: center; font-size:3.0em; z-index: 0; } .activityItem { margin: 0px !important; padding: 0px !important; border: 0px !important; } .mainContainer { z-index: 999; width: 100%; height: 40px; left: 0px; margin-top: 10px; display: inline-block; }
<h4>List of Activities</h4> <ion-list> <div class="emptyMsg">No Activities found!</div> <div class="item activityItem" ng-repeat="activity in activities | orderBy:field1Order:order.reverse1 | filter:importanceFilter | filter:motiveFilter track by $index"> <div class="mainContainer"> <div class="divBar">{{activity.energy}}%</div> </div> </div> </ion-list>
您可以使用ng开关来执行此操作。
例如:
` <div ng-app ng-controller="friendsCtrl">
<label>Search: </label><input ng-model="searchText" type="text">
<div ng-init="filtered = (friends | filter:searchText)">
<h3>'Found '{{(friends | filter:searchText).length}} friends</h3>
<div ng-switch="(friends | filter:searchText).length">
<span class="ng-empty" ng-switch-when="0">No friends</span>
<table ng-switch-default>
<thead>
<tr>
<th>Name</th>
<th>Phone</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="friend in friends | filter:searchText">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
</tr>
</tbody>
</table>
</div>`
相关文章:
- 如果下载不成功,如何显示消息
- 如何在 jquery 中的速率按钮下方显示消息状态
- 删除所有可拖动元素后如何显示消息
- php表单验证n在表单上显示消息3秒钟并淡出
- 单击“点赞”按钮时显示消息
- javascript初学者-无法在屏幕上显示消息框
- 在表单提交后显示消息的方法
- 遍历列表,并在jQuery为空时显示消息
- 在jquery幻灯片登录表单上显示消息
- 如果文本筛选器在ng重复中未返回结果,则显示消息
- 以javascript显示消息框
- 在angular 1中,我如何检测angular是否受支持,并在屏幕上显示消息's不受支持
- 浏览器全屏显示,按键时不显示消息
- 选取随机数组元素,将其移除,并在没有更多可用元素时显示消息
- 仅当浏览器不是Google Chrome时显示消息
- 如果所有李都被隐藏,则显示消息
- 在提交表单和显示消息之前,如何检查表单输入是否全是数字
- 如果使用 JavaScript 登录失败,如何在登录页面中显示消息
- j查询验证未显示消息
- 为什么不显示消息