orderBy不使用分页和过滤器

时间:2016-05-26 11:22:12

标签: javascript html angularjs pagination angularjs-orderby

<table>
<thead>
    <tr>
        <th class="col-md-3" ng-click="sortDirection = !sortDirection">Created At</th>
    </tr>
</thead>
<tbody>
    <tr dir-paginate="food in foods | filter:foodFilter | itemsPerPage:pageSize | orderBy:'created_at_date'">
        <td class="col-md-"> {{food.created_at_date}} </td>
</tbody>
</table>

<dir-pagination-controls
    max-size= 7
    boundary-links="true">
</dir-pagination-controls>

这只是我的代码片段,但它太大而无法忍受。一切正常,只有一些created_at_date是有序的。当我单击其他过滤器以根据该过滤器添加或删除数据时,只会将其中一些过滤器输入到正确的位置。我的主要问题是:是否有适当的排序所有日期,同时仍然允许其他所有功能?欢迎所有帮助,谢谢

 (function () {
"use strict";

App.controller('foodsController', ['$scope'],
    function($scope) {
        $scope.sortDirection  = true;

1 个答案:

答案 0 :(得分:0)

在控制器中,您可以添加方法以在循环之前对数组进行排序。

假设您的食物数组有一个对象数组,每个对象都有一个created_at_date键和一个值:

<table>
    <thead>
        <tr>
            <th class="col-md-3" ng-click="sortDirection = !sortDirection">Created At</th>
        </tr>
    </thead>
    <tbody>
        <tr dir-paginate="food in orderBy('created_at_date', foods) | filter:foodFilter | itemsPerPage:pageSize">
            <td class="col-md-"> {{food.created_at_date}} </td>
        </tr>
    </tbody>
</table>

现在,在您的模板上,您可以使用一种方法为您排序值:

orderBy

我们在你的控制器上创建的window.open方法返回一个数组,但它只是作为函数的第一个参数发送的键排序。第二个参数是您尝试排序的原始数组。

至少通过这种方式,您可以检查是否删除了所有其他过滤器以查看它是否正确排序,如果再将其添加回来,则会更改它,因为这些过滤器也在更改顺序。