我正在尝试按两列的加权平均值对表进行排序。列的权重存储在 Controller 的范围内。当我尝试在 orderBy 表达式中引用这些权重时,排序未正确完成。
<tr ng-repeat = "x in fruitdata | orderBy:'cost.apples*apples + cost.oranges * oranges'">
我想要的东西:https://jsfiddle.net/t3op50p9/2/
如果我对权重进行硬编码,那么一切都会正常工作
<tr ng-repeat = "x in fruitdata | orderBy:'1.89*apples + 1.49 * oranges'">
摆弄硬编码权重(不是我想要的):https://jsfiddle.net/t3op50p9/3/
最佳答案
您可以在范围内定义一个函数,用于计算排序的权重
$scope.orderFn = function (fruit) {
return fruit.apples * $scope.cost.apples + fruit.oranges * $scope.cost.oranges;
}
ng-repeat="x infruitdata | orderBy: orderFn:true"
(注意:末尾的 true
会反转排序函数生成的顺序,从而使最大的重量在顶部。)
关于javascript - 按 Angular 加权平均值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124361/