Rob*_*ert 4 angularjs angular-filters
是否可以使用角度过滤器"groupBy"(https://github.com/a8m/angular-filter#groupby)来计算每个组中的元素以用于"徽章"范围(当然不使用函数做"手工计数")
<div class="list-group" ng-repeat="(key, value) in directoryResult | groupBy: 'TableId'">
<a href="#" class="list-group-item active">
<span class="glyphicon glyphicon-transport"></span> {{convertTableid(key)}} <span class="badge">{{directoryResult.length}}</span>
</a>
<div class="list-group" ng-repeat="item in value">
<a href="#" class="list-group-item">
<span class="glyphicon glyphicon-transport"></span> {{item.Text}}
</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果您执行以下操作:
ng-repeat="(key, value) in directoryResult | groupBy: 'TableId' as result"
Run Code Online (Sandbox Code Playgroud)
那么result将是过滤后的变量.您可以检查组数的长度.
更新:
这是一个带有groupBy过滤器的plunker.
http://plnkr.co/edit/8jB4wSRtKfVmEsTGZtfV?p=preview
我采用了我发现的现有滤镜(因为角度没有内置滤镜)并添加了长度属性.结果显示正确.
更新2:
另一个plunker:http : //plnkr.co/edit/iwUkIMjvevja7KyfTrFC?p = preview
由于角度滤波器不提供长度属性,因此您必须自己计算 Object.keys
<div>Number of groups: {{numGroups(result) }} </div>
Run Code Online (Sandbox Code Playgroud)
JS:
$scope.numGroups = function(input){
return Object.keys(input).length;
}
Run Code Online (Sandbox Code Playgroud)
更新3: 结果包含一个对象文字:每个属性都命名为"key",其值是列表的子组.所以运行的解决方案是:
<div>Number of groups: {{numGroups(result[key]) }} </div>
Run Code Online (Sandbox Code Playgroud)
更新4 最后我们可以直接使用numGroups函数完全摆脱:
<div>Number of groups: {{result[key].length}} </div>
Run Code Online (Sandbox Code Playgroud)
所以你的第一个想法是好的,我只需要将它作为我的groupBy进行修改,然后重新生成一个包含所有goruped列表的对象文字.
| 归档时间: |
|
| 查看次数: |
5622 次 |
| 最近记录: |