【问题标题】:AngularJS rows ordering in tableAngularJS行在表中排序
【发布时间】:2017-11-20 04:09:21
【问题描述】:

我的 html 页面中有一个简单的表格,可以通过单击标题对行进行排序:

<table class="table-bordered table-striped table" style="width: 800px;">
    <tr>
        <th>
            <a href="#" ng-click="sortType='id';sortReverse=!sortReverse">
                ID
                <span class="glyphicon glyphicon-triangle-bottom"
                      ng-show="sortType=='id' && !sortReverse"></span>
                <span class="glyphicon glyphicon-triangle-top"
                      ng-show="sortType=='id' && sortReverse"></span>
            </a>
        </th>
        <th>
            <a href="#" ng-click="sortType='name';sortReverse=!sortReverse">
                Name
                <span class="glyphicon glyphicon-triangle-bottom"
                      ng-show="sortType=='name' && !sortReverse"></span>
                <span class="glyphicon glyphicon-triangle-top"
                      ng-show="sortType=='name' && sortReverse"></span>
            </a>
        </th>
        <th>
            <a href="#" ng-click="sortType='desiredResolutionDate';sortReverse=!sortReverse">
                Desired Date
                <span class="glyphicon glyphicon-triangle-bottom"
                      ng-show="sortType=='desiredResolutionDate' && !sortReverse"></span>
                <span class="glyphicon glyphicon-triangle-top"
                      ng-show="sortType=='desiredResolutionDate' && sortReverse"></span>
            </a>
        </th>
        <th>
            <a href="#" ng-click="sortType='urgency';sortReverse=!sortReverse">
                Urgency
                <span class="glyphicon glyphicon-triangle-bottom"
                      ng-show="sortType=='urgency' && !sortReverse"></span>
                <span class="glyphicon glyphicon-triangle-top"
                      ng-show="sortType=='urgency' && sortReverse"></span>
            </a>
        </th>
        <th>
            <a href="#" ng-click="sortType='state';sortReverse=!sortReverse">
                State
                <span class="glyphicon glyphicon-triangle-bottom"
                      ng-show="sortType=='state' && !sortReverse"></span>
                <span class="glyphicon glyphicon-triangle-top"
                      ng-show="sortType=='state' && sortReverse"></span>
            </a>
        </th>
        <th>
            Action
        </th>
    </tr>
    <tr ng-repeat="ticket in allTickets | orderBy:sortType:sortReverse|filter:searchTicket">
        <td>{{ticket.id}}</td>
        <td><a href="#">{{ticket.name}}</a></td>
        <td>{{ticket.desiredResolutionDate}}</td>
        <td>{{ticket.urgency}}</td>
        <td>{{ticket.state}}</td>
        <td><input type="button" value="btn"></td>
    </tr>
</table>

控制器部分:

$scope.sortType = 'urgency';
$scope.sortReverse = false;

它可以工作,但是如果用户单击“紧急”标题,并且我有 4 种紧急类型(“关键”、“高”、“中”、“低”),它将对行进行排序这个顺序:'Critical'->'High'->'Low'->'Medium',但我不想按字符排序,我想按紧迫性降序排序,例如'Critical'->'High' ->“中”->“低”。

【问题讨论】:

  • 阅读 orderBy 过滤器的文档。它解释了如何使用返回必须进行比较的值的函数。另外,在搜索之前进行过滤:这会使事情变得更快。

标签: angularjs sorting


【解决方案1】:

将另一个属性添加为 urgencyNumber

1 for critical
2 for high
3 for medium
4 for low

当用户点击按紧急程度排序时按紧急编号排序

更新

如果您无法在服务器端添加 urgencyNumber,您可以遍历 allTickets 并在控制器中设置 urgencyNumber

angular.forEach($scope.allTickets, function (value, key) {

    if (value.urgency == "critical") {
        value.urgencyNumber = 1;
    }
    else if (value.urgyncy = "high") {
        value.urgencyNumber = 2;
    }

    ...
}); 

如果你把你的html改成这个

<a href="#" ng-click="sortType='urgencyNumber';sortReverse=!sortReverse">Urgency
    <span class="glyphicon glyphicon-triangle-bottom"
            ng-show="sortType=='urgencyNumber' && !sortReverse"></span>
    <span class="glyphicon glyphicon-triangle-top"
            ng-show="sortType=='urgencyNumber' && sortReverse"></span>
</a>

现在当用户点击按紧急项目排序时,将按紧急号码排序

【讨论】:

  • 如果您能解释一下它在控制器中的外观,我将不胜感激。我对angularjs很陌生,所以我不知道该怎么做。
  • 非常感谢
猜你喜欢
  • 2015-09-13
  • 1970-01-01
  • 2013-10-08
  • 2015-03-14
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
相关资源
最近更新 更多