ng-table:如何按不是ng-repeat一部分的值排序?

时间:2014-09-25 18:15:46

标签: angularjs

我使用的ng-table指令非常好但似乎没有适当的文档。 我无法找到一种按值排序的方法,而不是列值。例如,请考虑这是我从服务器获取的数据:

 this.data = [ {'id': 1, 'gender': 'female', height: 170}, 
             {'id': 2, 'gender': 'male', height: 180}
    ];

这是html:

<table dir='rtl' ng-table="service.tableParams">
  <tr ng-repeat="row in service.data">
     <td data-title="'gender'" sortable="'gender'">{{row.gender}}</td>
     <td data-title="'name'">{{ service.nameOf[row.id] }}</td>
     <td data-title="'height'" sortable="'height'">{{row.height}}</td>
  </tr>
</table>

在js文件中我有一个从id到名称的地图:

nameOf = { 1: 'omer', 2: 'noam' };

我的问题是按名称列排序。我想按nameOf [row.id]排序,而不是id。 知道怎么做吗?

谢谢, 奥马尔。

1 个答案:

答案 0 :(得分:0)

这应该有用;)

点击可排序按钮时,您必须自己定义排序方式。

getData: function($defer, params) {
        var orderedData;

        var sortByName = params.sorting().name
        if(sortByName) {
          orderedData = data.sort(function(a, b){
             var nameA=service.nameOf[a.id].toLowerCase(), nameB=service.nameOf[b.id].toLowerCase()
             if (nameA < nameB)
              return -1
             if (nameA > nameB)
              return 1
             return 0 
            });
            if (sortByName == 'desc') {
              orderedData = orderedData.reverse();
            }
        } else {
          orderedData = params.sorting() ?
                            $filter('orderBy')(data, params.orderBy()) :
                            data;
        }

        $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
    }

示例Plnkr