AngularJS:orderBy OrderBy是否喜欢过滤器?

时间:2014-04-23 20:31:35

标签: angularjs

我有一个表,我在其中使用大多数AngularJS教程中的doSort()示例来按列对数据进行排序。但是,由于我正在使用doSort()的orderBy,我无法弄清楚如何进行默认排序。

我尝试堆叠orderBy(就像你可以使用过滤器一样),但默认设置不起作用。

这是我的表,但orderBy:dueDate被忽略 -

<table id="tblProjects" class="tblLanding" ng-hide="projectManagerClose">
        <tr class="landing_header_row">
          <th style="width:7%;" data-ng-click="doProjSort('Priority')">Priority</th>
          <th style="width:3%;" data-ng-click="doProjSort('Task_Id')">ID</th>
          <th style="width:17%;" data-ng-click="doProjSort('Description')">Description</th>
          <th style="width:10%;" data-ng-click="doProjSort('Status')">Status</th>
          <th style="width:15%;" data-ng-click="doProjSort('Division')">Division</th>
          <th style="width:12%;" data-ng-click="doProjSort('Requestor')">Requestor</th>
          <th style="width:12%;" data-ng-click="doProjSort('ProjMan')">Project Manager</th>
          <th style="width:12%;" data-ng-click="doProjSort('AssignedTo')">Assigned To</th>
          <th style="width:12%;" data-ng-click="doProjSort('DueDate')">Due Date</th>
        </tr>
        <tr class="landing_data_row" data-ng-repeat="project in open_projects | 
                filter: pmProjectsFilter | filter: statusFilter | 
                orderBy: DueDate | orderBy:sortProjBy:reverse">
            <td><div class='sprite indic-{{project.Priority}} centered'></div></td>
            <td style="text-align:center;">{{project.Task_Id}}</td>
            <td><a href="#">{{project.Description}}</a></td>
            <td>{{project.Status}}</td>
            <td>{{project.Division}}</td>
            <td>{{project.Requestor}}</td>
            <td>{{project.ProjMan}}</td>
            <td>{{project.AssignedTo}}</td>
            <td>{{project.DueDate | date : 'MMM dd, yyyy'}}</td>
        </tr>
    </table>

1 个答案:

答案 0 :(得分:2)

'DueDate'周围缺少单引号。这是必要的,因为它是一个文字字符串,而不是像sortProjBy这样的变量。

    <tr class="landing_data_row" data-ng-repeat="project in open_projects | 
            orderBy:'DueDate' | orderBy:sortProjBy:reverse">

这实际上是由DueDate最初对数据进行排序。然后,当某个值分配给sortProjBy时,第二个orderBy将覆盖第一个orderBy。这是一个展示这种行为的掠夺者:http://plnkr.co/edit/GNN7m90e3PYfTmxoNdbn?p=preview

如果要在多个列上实现排序(始终按DueDate排序,然后按单击的列排序),请使用array syntax

    <tr class="landing_data_row" data-ng-repeat="project in open_projects | 
            orderBy:['DueDate',sortProjBy]">

以下是数组语法的演示:http://plnkr.co/edit/FQxPNmwVNMd4lmn9mPSZ?p=preview