簡體   English   中英

AngularJs orderBy 深場?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM