ng重复计数-筛选器更新次数不超过一次
ng-repeat count - filter not updating more than once
我有一个列表,上面附加了一些过滤器。我想统计一下项目,如果有0个项目,就会显示一条消息。。。
<li ng-repeat="item in items = (items | sortWithTab:tab | filter:search")>
{{ item.name }}
</li>
<div ng-if="items.length === 0">No items</div>
项目集包含一个带有名称的tab
字段,我有相关的按钮可以按该名称进行筛选,从而更新$scope.tab
名称。
如果我想输出该列表中的项目数,我会执行items.length
,这很有效。但是,如果我尝试返回已按下的选项卡,它不会更新。有人知道为什么吗?
以下示例:
var app = angular.module('App', []);
app.controller('SampleCtrl', ['$scope',
function($scope) {
$scope.tab = 'all';
$scope.changeTab = function(tab)
{
$scope.tab = tab;
}
$scope.items = [
{name: 'One', tab: 'live'},
{name: 'Two', tab: 'today'},
{name: 'Three', tab: 'today'},
{name: 'Four', tab: 'today'},
{name: 'Five', tab: 'live'},
{name: 'Six', tab: 'today'},
{name: 'Seven', tab: 'today'},
{name: 'Eight', tab: 'live'}
];
}]);
app.filter('sortWithTab', function() {
return function(list, tab) {
var filtered;
var i;
if (tab == 'all') {
return list;
} else if (tab == 'today') {
filtered = [];
for (i = 0; i < list.length; i++) {
if(list[i].tab == 'today')
filtered.push(list[i]);
}
return filtered;
} else if (tab == 'live') {
filtered = [];
for (i = 0; i < list.length; i++) {
if(list[i].tab == 'live')
filtered.push(list[i]);
}
return filtered;
} else {
return list;
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App" ng-controller="SampleCtrl">
<a ng-click="changeTab('all')">All</a>
<a ng-click="changeTab('today')">Today</a>
<a ng-click="changeTab('live')">Live</a>
<ul>
<li ng-repeat="item in items = (items | sortWithTab:tab)">
{{ item.name }}
</li>
Total: {{ items.length }}
</ul>
</div>
更改
<li ng-repeat="item in items = (items | sortWithTab:tab)">
至
<li ng-repeat="item in filtered = (items | sortWithTab:tab)">
var app = angular.module('App', []);
app.controller('SampleCtrl', ['$scope',
function($scope) {
$scope.tab = 'all';
$scope.changeTab = function(tab) {
$scope.tab = tab;
}
$scope.items = [{
name: 'One',
tab: 'live'
}, {
name: 'Two',
tab: 'today'
}, {
name: 'Three',
tab: 'today'
}, {
name: 'Four',
tab: 'today'
}, {
name: 'Five',
tab: 'live'
}, {
name: 'Six',
tab: 'today'
}, {
name: 'Seven',
tab: 'today'
}, {
name: 'Eight',
tab: 'live'
}];
}
]);
app.filter('sortWithTab', function() {
return function(list, tab) {
var filtered;
var i;
if (tab == 'all') {
return list;
} else if (tab == 'today') {
filtered = [];
for (i = 0; i < list.length; i++) {
if (list[i].tab == 'today')
filtered.push(list[i]);
}
return filtered;
} else if (tab == 'live') {
filtered = [];
for (i = 0; i < list.length; i++) {
if (list[i].tab == 'live')
filtered.push(list[i]);
}
return filtered;
} else {
return list;
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App" ng-controller="SampleCtrl">
<a ng-click="changeTab('all')">All</a> |
<a ng-click="changeTab('today')">Today</a> |
<a ng-click="changeTab('live')">Live</a> |
<ul>
<li ng-repeat="item in filtered = (items | sortWithTab:tab)">
{{ item.name }}
</li>
<div ng-if="filtered.length === 0">No items</div>
Total: {{ filtered.length }}
</ul>
</div>
相关文章:
- Slding表单不会一次显示一个表单
- 变量递增两次而不是一次
- Gulp任务似乎运行了两次,而不是一次
- 为什么我的代码可以在chrome上工作,而不是一次使用cordova编译
- 如何仅在每次单击可滚动(jquery工具)中的导航按钮时加载图像,而不是一次加载所有图像
- AJAX 请求触发 4 次而不是一次
- 为什么 console.log() 被调用两次而不是一次
- 如何按顺序处理函数,而不是一次全部处理
- 如何在HTML5网页中本地保存数据,这样我们就不需要一次又一次地从服务器获取
- 如何使细胞一次改变一个颜色,而不是一次改变所有颜色
- 滚动函数触发多次而不是一次
- 警报显示两次而不是一次
- 使用单击事件处理程序的 JQuery.如何防止所有元素不显示一次只显示一个元素
- 创建小计,在连续单击单选按钮时将点相加,而不是一次全部单击
- ng重复计数-筛选器更新次数不超过一次
- JQuery -幻灯片,图库:顺序加载图片(接下来的五张),而不是一次全部加载
- Ajax/PHP值不会增加超过一次
- JT类不超过一次
- HTML5历史API:不能倒退超过一次
- Jquery不更新元素中的文本超过一次