AngularJS toArray 将对象键转换为数字

2024-04-22

我在项目中使用角度过滤器按页面对输出对象进行排序,问题是当我使用如下语法时:

<ul class="catalog-list"
    ng-repeat="(key, value) in list | groupBy: 'styl' | toArray | orderBy:'page'">

  {{key}}

  <li ng-repeat="dziecko in value | filter:search | bookmark:search" 
      ng-class="{active:isActiveTab(dziecko)}"
      ng-click="openItem(dziecko)">
    {{dziecko.rodzina}}
    <b>{{dziecko.page}}</b>
  </li>
</ul>

Angular 将 'styl' 属性 ['nowoczesny','klasyczny'..] 转换为数字。排序工作正常,但我想获取名称而不是数字。


groupBy返回一个对象,并且orderBy期望数组作为参数,所以这就是你应该使用的原因toArray筛选。

toArray像这样工作:
Usage: object | toArray: addKey[optional]
如果 addKey 设置为 true,过滤器还会附加一个新属性$key包含我们正在迭代以引用属性的对象中使用的原始键的值

所以,你可以做这样的事情example,或者看看jsbin http://jsbin.com/mukahonaxu/1/edit?html,js,output

JS:

$scope.groups = [
    { category: 'alpha', id: 2 },
    { category: 'beta',  id: 3 }, 
    { category: 'gamma', id: 0 },
    { category: 'alpha', id: 4 },
    { category: 'beta',  id: 5 }, 
    { category: 'gamma', id: 1 }
   ];

HTML:

 <ul ng-repeat="group in groups | groupBy:'category' | toArray:true | orderBy:min">
    <!-- print the group name -->
    <li>{{ group.$key }}</li>
    <!-- iterate over the group members and order each group by id -->
    <li ng-repeat="item in group | orderBy:'id'">
      {{ item }}
    </li>
</ul>

RESULT:

  • alpha
  • {“类别”:“alpha”,“id”:2}
  • {“类别”:“alpha”,“id”:4}

  • beta

  • {“类别”:“测试版”,“id”:3}
  • {“类别”:“测试版”,“id”:5}

  • gamma

  • {“类别”:“伽玛”,“id”:0}
  • {“类别”:“伽玛”,“id”:1}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS toArray 将对象键转换为数字 的相关文章

随机推荐