我有一张带有此ng-repeat的表
ticket in filteredTickets = (vm.tickets | filter : vm.search | orderBy : vm.propertyName : vm.reverse | limitTo:vm.itemsPerPage:vm.itemsPerPage*(vm.currentPage-1))
我的thead在ng-click上调用一个函数
ng-click="vm.sortBy('title');"
在我的控制器中
// table ordering
vm.propertyName = 'ticketID'; // default order
vm.reverse = true;
vm.sortBy = function(propertyName) {
vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;
vm.propertyName = propertyName;
}
但是订购不正确。我有多个列,其中一些带有整数,另外一些带有字符串,并且排序不正确(顺序是随机的)
有帮助吗?
答案 0 :(得分:0)
您有limiTo
过滤器,因此,当您更改vm.propertyName
的值时,您会看到另一套票证(不是最新的票证,但具有新的排序),可能确实会给您带来轰动“随机” 排序?在这种情况下,您可以在vm.currentPage = 1
方法内设置vm.sortBy
,以从首页开始创建新概述,或在{strong>之前之前,放置limitTo
过滤器以修复当前问题页面,然后对其进行排序,如下所示:
orderBy
angular.module('app', []).controller('ctrl', function($scope){
var vm = this;
vm.propertyName = 'ticketID';
vm.itemsPerPage = 5;
vm.currentPage = 1;
vm.tickets = [];
for(var i = 0; i < 100; i++)
vm.tickets.push({
ticketID: i,
name: 'Name' + (100 - i)
})
vm.sortBy = function(propertyName) {
vm.reverse = (vm.propertyName === propertyName) ? !vm.reverse : false;
vm.propertyName = propertyName;
//or simply vm.currentPage = 1; without rest of stuff
}
vm.pages = function(value){
return Math.ceil(value);
}
})