角度JS排序

时间:2017-05-23 18:10:28

标签: angularjs angular sorting

我的产品列表显示在此页面上:

https://martin-colleccion.firebaseapp.com/catalogop/Macetas

并遵循以下代码:

<img class="col-xs-2" ng-src="{{producto.photo}}" class="img-responsive " alt="{{producto.nombre}}">

<div class="col-xs-1">
    <div class="project-category">
        <p><br/><br/>{{producto.codigo}}</p>
    </div>
    <div class="project-name">
        {{producto.nombre}}<br/>
        <div ng-repeat="(key, medida) in producto.medidas"> {{key}} {{medida.alto}} x {{medida.ancho}} cm <br/></div>
    </div>
</div>

但是我需要在medida.alto(从高到低)中使用Child值alto在ng-repeat里面进行排序:

<div ng-repeat="(key, medida) in producto.medidas"> {{key}} {{medida.alto}} x {{medida.ancho}} cm <br/></div>

我试过这些陈述:

  • ng-repeat="(key, medida) in producto.medidas | orderBy:'alto'"
  • ng-repeat="(key, medida) in producto.medidas | orderBy:'-alto'"
  • ng-repeat="(key, medida) in producto.medidas | orderBy:'medida.alto'"
  • ng-repeat="(key, medida) in producto.medidas | sortBy:(medida.alto)"
  • ng-repeat="(key, medida) in producto.medidas | sortBy:(alto)"

但排序不起作用。

1 个答案:

答案 0 :(得分:0)

在Angular中,您无法直接对对象进行排序,但有解决方法,

首先将对象转换为关联数组

并根据您想要的密钥进行排序。

这是示例代码

首先创建一个toArray过滤器

app.filter("toArray", function(){
    return function(obj) {
        var result = [];
        angular.forEach(obj, function(val, key) {
            result.push(val);
        });
        return result;
    };
});

   <div ng-repeat="(key, medida) in producto.medidas | toArray | orderBy:'alto'"> {{key}} {{medida.alto}} x {{medida.ancho}} cm <br/></div>