【问题标题】:ng-repeat order by for specific values on a property对属性的特定值进行 ng-repeat order by
【发布时间】:2017-05-20 23:09:42
【问题描述】:

我希望按一个属性上的多个特定值对我的列表进行排序,然后在完成后添加一些附加属性。

我的代码是:

<tr ng-repeat-start="subcontractor in trade.SubContractors | orderBy:['Status':'PREF','Status':'APPR','Status':'LOGD','Status':'NIU','-AverageScores.AverageScore','-ProjectCount','SubcontractorName']">

重要的部分(以及我无法工作的部分)在哪里:

'Status':'PREF','Status':'APPR','Status':'LOGD','Status':'NIU'

有没有办法在角度做到这一点?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    我会改为实现一个处理程序来处理数据。在设置分包商之前对其进行处理,通过处理程序运行每个元素并为每个元素分配“sortValue”属性。

    然后只需使用 sortValue 属性调用 orderBy。通过这种方式,您可以将排序数据与显示数据分离。虽然不要使用过滤器来这样做,因为这将是相当昂贵的资源虎钳。

    有点像

            var statusSorting = ['PREF','APPR','LOGD','NIU'];
    
            function sortContractors(models) {
                var processed = [];
    
                angular.forEach(models, function(model){
    
                    // logic to assign sortValue
                    var statusIndex = statusSorting.indexOf(model.status);
                    model.sortValue = statusIndex + 1;
    
    
    
                });
    
                return processed;
            }
    
            api.getData()
            .then(function(data){
                $scope.models = sortContractors(data);
            });
    
            // template
            <tr ng-repeat="model in models | orderBy:'sortValue'">
    

    然后您可以通过更改数组中的状态位置并排序 desc/asc 来控制优先级。

    或者: orderBy multiple fields in Angular

             <tr ng-repeat="model in models | orderBy:['sortValue', 'contractorName']">
    

    【讨论】:

      【解决方案2】:

      您的答案有一些不需要的部分,因此我对其进行了调整以提供以下内容:

      function getStatusSortOrder(subcontractors) {
          var statusSorting = ['PREF', 'APPR', 'LOGD', 'NIU'];
      
          angular.forEach(subcontractors, function (model) {                    
               statusIndex = statusSorting.indexOf(model.Status);
               model.StatusSortValue = statusIndex;
          });                
      }
      

      【讨论】:

        猜你喜欢
        • 2014-08-19
        • 1970-01-01
        • 2014-06-21
        • 2011-01-11
        • 2015-11-29
        • 2017-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多