在我的例子中如何按角度排序对象列表

时间:2016-03-16 16:39:00

标签: javascript angularjs

我正在尝试为orderBy用户ng-repeat。但是,我想在列表顶部添加一个额外的项目。

Catogary
AItem
BItem
CItem
DItem

在我获得项目列表后,类别被添加到列表中。我不希望过滤类别并成为

AItem
BItem
Catogary
CItem
DItem

我的重复

<div ng-repeat=“item in items | orderBy:’title’”>
</div>

我该如何解决这个问题?谢谢!

示例数据

$scope.items = [
    {id: ‘aaa’,
     title: ‘AItem’,
     type:’picture’
     },
    {id: ‘bbb’,
     title: ‘BItem’,
     type:’toy’
     },
    {id: ‘ccc’,
     title: ‘CItem’,
     type:’food’
     }
]

3 个答案:

答案 0 :(得分:1)

您可以对控制器中的列表进行排序,然后将Catogary(Category ???)项添加到数组中,然后将其绑定到视图

答案 1 :(得分:1)

尝试自行显示类别。 首先过滤掉类别然后排序。

<div ng-repeat=“item in items | filter:{title:'Catogary'}”>
    <!-- display the catogary-item -->
</div>
<div ng-repeat=“item in items | filter:{title:'!Catogary'} | orderBy:'title'”>
    <!-- display other items -->
</div>

实际上不应该这样做。您应该考虑一下您的数据结构。

答案 2 :(得分:1)

以下是一名说明奥斯汀要做的事并解决问题的傻瓜http://plnkr.co/edit/nkixXUlTXYvwlB388jlA?p=info

你的控制器基本上就是这个。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($filter) {
  var vm = this;

  var data = [{
    id: 'aaa',
    title: 'AItem',
    type: 'picture'
  },
  {
    id: 'ddd',
    title: 'DItem',
    type: 'test'
  },
  {
    id: 'bbb',
    title: 'BItem',
    type: 'toy'
  }, {
    id: 'ccc',
    title: 'CItem',
    type: 'food'
  }];

  vm.items = $filter('orderBy')(data,'title');

  vm.items.unshift({
    id: 'something',
    title: 'Catogary',
    type: 'idk'
  });
});