javascript - AngularJS orderBy 不支持自定义函数

标签 javascript angularjs angularjs-orderby

目前,我已经创建了自定义函数来从 Moment 中查找 fromNow,并且我想根据函数返回的值对数据进行排序。

我想将表格元素放在从现在起的天数较小的顶部

在下表中,第二列的从今天开始的 31 天较小,我想将此元素放在顶部,我已经尝试过以下方法,但它不起作用

有人可以帮我吗 表格

<强> Table Demo

AngularJS 订单依据

<tr ng-repeat="x in Holidays|orderBy:findFromNow">
                <td>{{$index+1}}</td>
                <td>{{x.Day}}</td>
                <td>
                <span class="label label-warning">{{findFromNow(x.Date)}} Days From Today</span></td>
                </tr>

功能

$scope.findFromNow = function (inputDate) {
        var m = moment(inputDate, "D-MMM-YY");
        var today = moment().startOf('day');
        var days = Math.round((today - m) / 86400000);
        if (days > 0) {
            return 999;
        } else {
            return (days * (-1));
        }

    }

假期 JSON

  [
    {
      "Day": "Monday",
      "Date": "2-Jan-17"
    },
    {
      "Day": "Monday",
      "Date": "20-Feb-17"
    },
    {
      "Day": "Monday",
      "Date": "29-May-17"
    },
    {
      "Day": "Monday",
      "Date": "3-Jul-17"
    },
    {
      "Day": "Tuesday",
      "Date": "4-Jul-17"
    },
    {
      "Day": "Monday",
      "Date": "4-Sep-17"
    },
    {
      "Day": "Thursday",
      "Date": "23-Nov-17"
    },
    {
      "Day": "Friday",
      "Date": "24-Nov-17"
    },
    {
      "Day": "Monday",
      "Date": "25-Dec-17"
    }
  ]

最佳答案

在使用 moment 之前,您应该编写单独的函数或检查 inputDate 的类型,因为在 orderBy 中,inputDate 是 Object 而不是 Date

 $scope.sortDate = function(inputDate){
    var m = moment(inputDate.Date, "D-MMM-YY");
    var today = moment().startOf('day');
    var days = Math.round((today - m) / 86400000);
    if (days > 0) {
        return 999;
    } else {
        return (days * (-1));
    }

}

这是 plnkr:

http://plnkr.co/edit/afgsPDBF5RXG5WviYrdU?p=preview

希望对你有帮助

关于javascript - AngularJS orderBy 不支持自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881450/

相关文章:

javascript - 删除多个标点符号后面的标点符号javascript

javascript - 使用 angularJS 在前面转换货币

javascript - 如何在 angularJS 中访问 <select> 的值

javascript - Angularjs orderBy 排序问题 - 即,将 10 排序在 8 之前

JavaScript 不会在加载时运行。如何在 HTML 中修复?

javascript - 解析作为响应返回的 JSON 对象

javascript - 如何将 Angular 对象传递给 pug mixin?

angularjs - 更改 View 和 Controller 而不更新 url 或历史记录

orderBy后Angularjs错误$index