我有一個非常簡單的場景,其中有一組記錄可用,我需要用簡單的ng-repeat來顯示它們。不過,我需要按屬性分組的記錄,而我的目標並不是必須更改集合才能完成此分組。我的想法是,可以應用某種類型的過濾器,但在實踐中過濾器,過濾器,數據和不分組。有沒有辦法擁有一個集合,並簡單地分組和重複?在AngualJS ng-repeat中分組收藏?
真正的黑客jsFiddle在這裏與我正在嘗試做什麼。
http://jsfiddle.net/bryangrimes/RufQh/5/
總之這個想法是沿着線:
<ul>
<li ng-repeat="log in logs grouped by log.dept">
<h4>{{log.dept}}</h4>
{{log.name}} worked {{log.hours}} this week
</li>
</ul>
更新: 那麼到底我們已經使用taffyDB對房屋的原始數據集,從而使剛剛擴大。
$.each($scope.logs, function() {
var log = $(this)[0];
// build angular friendly data structure
log.workLogsDB = TAFFY(log.worklogs);
log.deptLogs = [];
$.each(log.workLogsDB().distinct('department').sort(), function() {
var dept = $(this)[0].toString();
var cost = log.workLogsDB({department:dept}).sum('cost');
var hours = log.workLogsDB({department:dept}).sum('hours');
var items = log.workLogsDB({department:dept}).get();
log.deptLogs.push({
department: dept,
total_cost: cost,
total_hours: hours,
line_items: items
});
});
});
和HTML渲染:
<div ng-repeat="log in logs">
<h3 onclick="$('#{{log.project}}').slideDown()">
{{log.project}} hours:{{log.hours}} cost: ${{log.cost}}
</h3>
<ul id="{{log.project}}" style="display: none;">
<div ng-repeat="log in log.deptLogs">
<span style="font-weight: bold; text-transform: capitalize;">{{ log.department }} - Team Cost: ${{ log.total_cost }}, Team Hours: {{ log.total_hours }} </span>
<li ng-repeat="line in log.line_items">
{{line.employee}} {{line.hours}} hours
</li>
<br>
</div>
</ul>
</div>
所以這正是我想要了解如何處理像這樣分組的東西的答案。最後,我認爲我的實際數據結構對於我想要做的事情來說有點複雜,但是我今天會討論它併發布我得到的結果。非常感謝。 – BryanGrimes