javascript - 按 Angular 加权平均值排序

标签 javascript html angularjs

我正在尝试按两列的加权平均值对表进行排序。列的权重存储在 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 会反转排序函数生成的顺序,从而使最大的重量在顶部。)

https://jsfiddle.net/TheSharpieOne/t3op50p9/6/

关于javascript - 按 Angular 加权平均值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124361/

相关文章:

Android Webview Javascript - 对脚本的引用不起作用

javascript - 如何在 jQuery/js 中使用 if 语句更改变量值

javascript - 检查变量是否(已定义)在 JavaScript 中不起作用

javascript - 我的动画 jQuery 不透明度不起作用

javascript - 使用 jquery 动态改变背景颜色

html - 在 XPath 中将货币与美元符号 ($) 和逗号 (,) 匹配

html - 如何更改每个动态创建的 FlexBox 的背景颜色?

Angularjs 日期输入允许空输入

javascript - 使引导轮播中的图像响应?

angularjs - 将变量从 Symfony2 传递到 Angular 范围的最佳方法