我正在构建一个仪表板以显示正在进行和已解决的问题。我使用过滤器对angular的ng-repeat进行了所有工作,并按日期分组。这是我到目前为止所获得的快速样本:
<div ng-app="myApp">
<div ng-controller='TestGroupingCtlr'>
<div ng-repeat="item in MyList | filter: {status: 'Closed'} | groupBy:'groupfield' " >
<h2 ng-show="item.groupfield_CHANGED">{{item.groupfield}}</h2>
<ul>
<li>{{item.whatever}} - Status: {{item.status}}</li>
</ul>
</div>
</div>
</div>
这是我的范围数组:
$scope.MyList = [
{groupfield: 'Day Before', whatever: 'Server X down', status: 'Open'},
{groupfield: 'Yesterday', whatever: 'Access issues', status: 'Open'},
{groupfield: 'Yesterday', whatever: 'Server Z is down', status: 'Closed'},
{groupfield: 'Today', whatever: 'Network problem', status: 'Closed'},
{groupfield: 'Today', whatever: 'Network is down', status: 'Closed'}
];
我的JSfiddle示例:
http://jsfiddle.net/R8YZh/6/
我的问题是,我需要仅在“今日”组下显示案件的案件。现在,从技术上讲,我可以简单地创建一个新的ng-repeat来仅显示“Open”问题,然后将其隐藏在我的第一个列表下。但是由于我有一个非常大的模板,其中包含很多问题详细信息,因此我要避免2个维护2个模板。
有谁知道是否有一种方法可以简单地使用现有的Ng-repeat并告诉您将所有Open问题显示在索引数组的末尾,以便它以某种方式进入Todays组?任何帮助表示赞赏。
这是我希望显示的内容:
Yesterday
Server Z is down - Status: Closed
Today
Network problem - Status: Closed
Network is down - Status: Closed
Server X down - Status: Open
Access isses - Status: Open
最佳答案
将过滤应用于li元素级别而不是在组级别执行可能更容易
<div ng-app="myApp">
<div ng-controller='TestGroupingCtlr'>
<div ng-repeat="item in MyList | groupBy:'groupfield' " >
<h2 ng-show="item.groupfield_CHANGED">{{item.groupfield}}</h2>
<ul >
<li ng-show="item.status=='Closed' || item.groupfield=='Today' ">{{item.whatever}} - Status: {{item.status}}</li>
</ul>
</div>
</div>
</div>