javascript - 使用 AngularJS 函数进行排序

标签 javascript angularjs angularjs-ng-repeat angularjs-orderby

我正在使用 ng-repeat 列出对象数组中的项目。我想使用 orderBy (或者可能是一些自定义排序过滤器)对这些项目进行排序。

但是,我想要排序的字段并不保存在对象数组本身中,而是我有一个函数,可以用来为每个单独的对象计算它;但它需要将每个单独的对象传递到其中才能做到这一点。

类似这样的事情:

<table>
    <tr ng-repeat="item in sortedItems = (items | orderBy:'getStatus(item)':reverse)">
        <td>Title: {{item.title}}</td>
        <td>Status: {{getStatus(item)}}</td>
    </tr>
</table>

getStatus 在 Controller 内部的位置为:

$scope.getStatus = function(item){
    var days = item.days
    if(days<=100){
        var x=100-item.days+" ";
        if(days===99){
            return x+"day left";
        }
        return x+"days left";
    }
    return "Completed";
};

所以它返回一个字符串。

有什么方法可以按需要数组中每个单独项目的函数进行排序,以便按方式排序吗?

最佳答案

当然,只需从 orderBy 子句中删除参数即可,它需要单个项目:

<tr ng-repeat="item in sortedItems = (items | orderBy: getStatus :reverse)">

关于javascript - 使用 AngularJS 函数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679704/

相关文章:

javascript - 如何以人们可以打开的方式编译neutralinojs项目?

javascript - 如何在 JavaScript 中比较颜色?

javascript - 将服务器响应中的字符串渲染为 html

javascript - 从日期时间本地元素转换为日期对象

javascript - 服务内部的数据更改不会更新范围

javascript - 如何为 Ng Repeat 指令访问的 View 中的每个项目创建“查看更多”切换

javascript - 有没有一种方法可以在 intro.js 中调用 thead 和 tdata

javascript - Java-AngularJS http get方法获取带有 ""和转义字符的字符串

javascript - 如何在对象字段的 ng-repeat 中应用过滤器?

javascript - 如何使用 Angular JS 打开/关闭单击的 div 生成内部循环?