如何按角度按名称对此对象进行排序

时间:2016-02-08 09:18:01

标签: javascript angularjs json

我的客户需要一个角度js应用程序,该应用程序基于api,已经运行的应用程序。 其中一个apis,返回一个像这样结构的json:

{  
   "groups":{  
      "60":{  
         "name":"History"
      },
      "74":{  
         "name":"Discover our offers"
      },
      "109":{  
         "name":"Relaxing"
      }
   }
}

所以我们以这种方式在控制器上获取数据:

  $http({method: 'GET', url: restUrl}).
      then(function(response)
      {
          $scope.poi_groups = response.data.groups;
      });

并将其显示在视图上:

<ul class="content-menu">
    <li ng-repeat="(key, value) in poi_groups">
        <div><a ng-href="/poi/data/{{ key }}">{{ value.name }}</a></div>
    </li>
</ul>

我一直在努力的是按名称订购物品,现在它的显示方式与它在json上的返回方式完全一致。 我该怎么做:

(...)
<li ng-repeat="(key, value) in poi_groups | orderBy: value.name">
(...)

2 个答案:

答案 0 :(得分:1)

这种结构不适合angularjs:

  1. 在.then方法中自己动手
  2. 编写自己的过滤器
  3. 在.then方法中将对象映射到一个新对象,使其如下所示:

    [{     值:&#39; 60&#39 ;,     名称:&#39;历史&#39; },{     .... }]

  4. 然后你可以使用角度过滤。

答案 1 :(得分:0)

使用ngRepeat orderBy

使用 orderBy: 'name'

等过滤器
 <li ng-repeat="(key, value) in poi_groups| orderBy:'name'">

 <li ng-repeat="(key, value) in poi_groups| orderBy:'name': -1">

表示DESC

如果你做plnk我们可以检查出来