AngularJS按具有嵌套值的对象数组排序

时间:2019-02-24 19:00:46

标签: angularjs

我有一个这样的对象数组:

$scope.sortableItems =
[
  {
    name: 'Blue Shirt',
    fields: {Price: 20}
  },
  {
    name: 'Pink Shirt',
    fields: {Price: 80},
  },
  {
    name: 'Orange Shirt',
    fields: {Price: 10},
  }
]

我需要创建一个ng-repeat字段,以便根据价格从低到高或从高到低对产品进行排序。

我尝试过:

.product(ng-repeat="item in sortableItems | orderBy:fields.Price")

但是没有效果。

另外我还有另一个变量$scope.sortFunction,它可以等于Price: Low-HighPrice: High-Low,最终结果需要检测$scope.sortFunction的值并根据字符串的值排序。不确定如何使用ng-repeat

1 个答案:

答案 0 :(得分:0)

您可以创建一个返回价格的函数并在您的orderBy中使用该函数

js

  $scope.getPrice = function(item){
    return item.fields['Price'];
  }

html

<div ng-repeat="item in sortableItems | orderBy:getPrice:false">{{item.fields['Price']}}</div>

order by需要第二个布尔值,您可以将其用于asc / desc排序。

Demo