[英]AngularJs orderBy a deep field?
所以,我的問題有兩個部分,但首先,這是我正在處理的示例數據:
var candidates = [{
"candidateId": 1,
"firstName": "John",
"lastName": "Smith",
"email": "Smith@example.com",
"tasks": [{"taskId":1, "taskState": 3},
{"taskId":2, "taskState": 3},
{"taskId":3, "taskState": 3},
{"taskId":4, "taskState": 1},
{"taskId":5, "taskState": 2}]
},
{
"candidateId": 2,
"firstName": "John",
"lastName": "Doe",
"email": "Doe@example.com",
"tasks": [{"taskId":1, "taskState": 3},
{"taskId":2, "taskState": 3},
{"taskId":3, "taskState": 2},
{"taskId":4, "taskState": 3},
{"taskId":5, "taskState": 3}]
}];
第一部分是:我想按已完成任務數的最高數字排序/排序(例如,3 表示已完成)。 一整天都在努力尋找解決方案,但沒有運氣。 (嘗試通過添加numOfCompletedTasks
屬性來擴充對象,然后再將它們附加到作用域/vm 以及其他嘗試)
問題的第二部分是:我開始懷疑這是否是前端的任務,我的意思是,如果我有 1000 條記錄,我必須循環遍歷並獲取已完成任務的數量,該怎么辦?這不是后端任務嗎(這里的最佳實踐是什么)
對於第一部分,您看起來像這樣嗎?
$scope.candidates = [
{
"candidateId": 1,
"firstName": "John",
"lastName": "Smith",
"email": "Smith@example.com",
"tasks": [{"taskId":1, "taskState": 3},
{"taskId":2, "taskState": 3},
{"taskId":3, "taskState": 3},
{"taskId":4, "taskState": 1},
{"taskId":5, "taskState": 2}]
},
{
"candidateId": 2,
"firstName": "John",
"lastName": "Doe",
"email": "Doe@example.com",
"tasks": [{"taskId":1, "taskState": 3},
{"taskId":2, "taskState": 3},
{"taskId":3, "taskState": 2},
{"taskId":4, "taskState": 3},
{"taskId":5, "taskState": 3}]
}];
function customSort(items, field ,value){
var filtered = [];
angular.forEach(items, function(item) {
item.tasks.sort(function(a, b){
return (a[value] < b[value] ? 1 : -1);
});
filtered.push(item);
});
var foo = {"taskState": 3};
filtered.sort(function (a, b) {
return ($filter('filter')(a["tasks"], foo, "strict").length < $filter('filter')(b["tasks"], foo, "strict").length ? 1 : -1);
});
return filtered;
}
$scope.candidates = customSort($scope.candidates, "taskState");
第二:但我仍然相信在后端做它會更明智。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.