如何将项目移动到Angular 1中的列表前面

时间:2016-03-08 19:02:27

标签: javascript html arrays angularjs

在我们的数据库中,我们有一个给定的对象,用户可以拥有多个,但是1被标记为 primary 。 在我们的Angular 1应用程序中,我们列出了这些对象,但我们总是希望首先显示标记为 primary 的对象。

所以我们列出了这些对象......

<object-of-interest ng-repeat="obj in objs"></object-of-interest>

如果它是主要对象,则json形式的对象看起来像这样:

{
  attr_1: value,
  attr_2: value,
  ...
  primary: true
}

或者主要属性将设置为 false

我想知道将主要对象移动到数组前面的最佳方法是什么?

我在网上找到的唯一方法是从数组中删除对象然后使用unshift方法将它放在数组的前面,但这对我来说似乎是不洁净的。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用orderBy过滤器:

<object-of-interest ng-repeat="obj in objs | orderBy:'-primary'"></object-of-interest>

以下是Angular文档中改编的Plunker: http://plnkr.co/edit/T0h4JenpefWYXnul1U3J?p=preview

可在此处找到文档: https://docs.angularjs.org/api/ng/filter/orderBy

答案 1 :(得分:0)

有两种方法可以解决此问题,首先是在显示之前重新排序集合,这也是最正确的方法。

第二种方法是使用额外的ng-repeat和ng-show ir ng-if,这是不好的解决方案。

<object-of-interest ng-repeat="obj in objs" ng-show="obj.primary == true"></object-of-interest>
<object-of-interest ng-repeat="obj in objs" ng-show="obj.primary == false"></object-of-interest>

我建议您使用第一个解决方案,即从API接收后重新排序集合!