我有一個事件表(見下面的陣列),我試圖按照初始 > 正在進行 > 審查 > 已解決的順序按狀態對它們進行排序。然后在有組織的狀態中,我想按優先級對它們進行排序,因此 P1>P2>P3 然后按 Start_date 組織優先級,以便最舊的在頂部。
我似乎找不到任何在線排序粒度的示例。有誰知道我會怎么做?
這是我的陣列:
$scope.Incidents= [{
Start_date: "2021-12-01 09:20:00"
State: "Initial"
Priority: "P1"
},{
Start_date: "2021-11-01 07:20:00"
State: "Ongoing"
Priority: "P2"
},{ Start_date: "2021-10-01 05:20:00"
State: "Resolved"
Priority: "P3"
},{ Start_date: "2021-12-01 09:48:00"
State: "Ongoing"
Priority: "coach"
},{ Start_date: "2021-11-20 06:55:00"
State: "InReview"
Priority: "P1"
},{ Start_date: "2021-08-01 09:20:00"
State: "InReview"
Priority: "P2"
}];
<div ng-repeat="incident in Incidents| orderBy:Custom_order >
<div>{{incident.Priority}} - {{incident.Priority}} - {{incident.Start_date}}</div>
</div>
uj5u.com熱心網友回復:
這里有一個想法,如何撰寫一個排序函式,它可以很容易地適應此類其他排序問題。
let sort_order = ["Initial", "Ongoing", "InReview", "Resolved"];
let sort_func = function(a, b){
return sort_order.indexOf(a.State) - sort_idx.indexOf(b.State);
}
$scope.Incidents.sort(sort_func);
里面的序列sort_order將定義順序。如果您想顛倒順序,只需附加.reverse()到.sort(...).
uj5u.com熱心網友回復:
Petr 的評論讓我找到了正確的方向。找到了一個超級簡單的解決方案,我在這里或在線的任何地方都沒有看到過。
這是我在 ng-repeat 中添加的內容:
<div ng-repeat="incident in Incidents| orderBy:[Custom_order_State,Custom_order_Priority, 'Start_date'] >
<div>{{incident.State}} - {{incident.Priority}} - {{incident.Start_date}}</div>
</div>
在我的控制器中,我創建了 2 個自定義訂單函式,如下所示:
$scope.Custom_order_State= function (incident) {
if(incident.State=== 'Initial'){
return 1;
}
if(incident.état === 'Ongoing'){
return 2;
}
if(incident.état === 'InReview'){
return 4;
}
if(incident.état === 'Resolved'){
return 5;
}
};
$scope.Custom_order_Priority= function (incident) {
if(incident.Priority=== 'P1'){
return 1;
}
if(incident.Priority=== 'P2'){
return 2;
}
if(incident.Priority=== 'P3'){
return 3;
}
};
它對我來說完美無缺。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/377686.html
