angular js排序对应于数字的字符串

时间:2016-12-20 20:00:36

标签: angularjs sorting

我有一个JSON,其中版本号对应于手动插入html中的字符串。 JSON示例:

  Object $$hashKey : "007"
  tenant : "A. Edition" 
  uri :"1101403" 
  version : "4"

在html中:

 <th ng-click="sortData('version')">
          Version
 </th>

<tr ng-repeat="t in tenants | orderBy:sortColumn:reverseSort" >
  <td>
    <span ng-if="t.version==1" >Business Edition</span>
    <span ng-if="t.version==2" >Non-business Edition</span>
    <span ng-if="t.version==3" >Bank Edition</span>
    .......
 </td>

排序功能:

$scope.sortData = function (column) {
    $scope.reverseSort = ($scope.sortColumn == column) ?!$scope.reverseSort: false;
    $scope.sortColumn = column;
}

我想用字符串(商业版,非商业版等)而不是t.version排序。 我如何轻松地做到这一点(新的角度)?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这里可以使用面向对象编程的基本原理。您可以将“版本”属性转换为具有“id”和“value”属性的对象:

//your tenants object
[
    {
        tenant: "A. Edition",
        uri: "1101403",
        version:
        {
            id: 1,
            value: "Business Edition"
        }
    },
    {
        tenant: "B. Edition",
        uri: "1101404",
        version:
        {
            id: 2,
            value: "Non-Business Edition"
        }
    },
    {
        tenant: "C. Edition",
        uri: "1101405",
        version:
        {
            id: 1,
            value: "Business Edition"
        }
    },
    {
        tenant: "D. Edition",
        uri: "1101406",
        version:
        {
            id: 3,
            value: "Bank Edition"
        }
    }
]

好的是这也简化了你的HTML:

<tr ng-repeat="t in tenants | orderBy:sortColumn:reverseSort" >
  <td>
    <span>{{t.version.value}}</span>
 </td>

然后在设置排序术语时:

$scope.sortColumn = 'version.id';