SortBy无法正确排序?

时间:2018-07-04 12:13:24

标签: javascript html angularjs

我有一张带有此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;
    }

但是订购不正确。我有多个列,其中一些带有整数,另外一些带有字符串,并且排序不正确(顺序是随机的)

有帮助吗?

1 个答案:

答案 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);
  }
})