我有一个数据数组,其中包含许多对象(JSON格式)。以下内容可以假定为该数组的内容:
var data = [
{
"name": "Jim",
"age" : 25
},
{
"name": "Jerry",
"age": 27
}
];
现在,我将这些细节显示为:
<div ng-repeat="person in data | filter: query">
</div
在这里,查询被建模为一个输入字段,用户可以在其中限制显示的数据。
现在,我有了另一个位置,在其中显示正在显示的人员/人员的当前计数,即显示{{data。长度}}人
我想做的是,当用户搜索一个人,并且根据查询过滤显示的数据时,显示…“人”也会改变当前显示的人物的价值。但这并没有发生。它总是显示数据中的总人数,而不是过滤的一个-我如何得到过滤数据的计数?
这里是工作的例子见普兰克
<body ng-controller="MainCtrl">
<input ng-model="search" type="text">
<br>
Showing {{data.length}} Persons; <br>
Filtered {{counted}}
<ul>
<li ng-repeat="person in data | filter:search">
{{person.name}}
</li>
</ul>
</body>
<script>
var app = angular.module('angularjs-starter', [])
app.controller('MainCtrl', function($scope, $filter) {
$scope.data = [
{
"name": "Jim", "age" : 21
}, {
"name": "Jerry", "age": 26
}, {
"name": "Alex", "age" : 25
}, {
"name": "Max", "age": 22
}
];
$scope.counted = $scope.data.length;
$scope.$watch("search", function(query){
$scope.counted = $filter("filter")($scope.data, query).length;
});
});