0

我想使用 ng-repeat 以数组对象的 asc 顺序呈现数据。下面一个是数组对象。

$scope.Stepdetails=[{
        [{
             RequestId: 2024,
         name:aa
        }]
      },
      {
       [{
             RequestId: 2025,
       name:aa
        }]
      },
      {
       [{
             RequestId: 2023,
        }]
      }]

  <td ng-repeat="Steps in Stepdetails ">   

      <div ng-repeat="step in Steps| orderBy: 'Steps.step.RequestId'">
       </div>
   </td>
4

3 回答 3

1

您正在尝试访问数组元素,但您的结构是一个对象,请尝试更改结构,例如:

$scope.Stepdetails=[    // Steps

        [{              // Step
         name:aa,
             RequestId: 2024,
        }]
      ,

        [{
         name:aa,
             RequestId: 2025,
        }]
      ,
        [{
         name:aa
             RequestId: 2023,
        }]
      ]
于 2015-01-13T23:23:57.783 回答
0

这似乎非常可行,但是您的对象需要一些工作。@nairys 拥有正确的对象:

$scope.Stepdetails = [
    { name: "aa", RequestId: 2024},
    { name: "aa", RequestId: 2025},
    { name: "aa", RequestId: 2023}
];

您需要做的就是传入,RequestId因为name是同一件事(在您的示例中)。

考虑:

<div ng-controller="StepController">
    <div ng-repeat="step in Stepdetails | orderBy: 'RequestId'">
        {{ step.name }}, {{ step.RequestId}}
    </div>
</div>

角度自动按升序排列。要按降序排序,只需-在您想要的属性前添加一个。orderBy: '-RequestId'.

这是一个简单的顺序解决方案,但不适用于多维数组。但是,如果您只想订购一个简单的对象数组,这将起作用。

于 2015-01-14T02:43:12.600 回答
0

您不能使用内置的 orderBy 过滤器对这样的对象进行排序。在我进入之前,您的对象看起来不正确。它应该是这样的:

$scope.Stepdetails =[{name: aa, RequestId: 2024},
                     {name: aa, RequestId: 2025},
                     {name: aa, RequestId: 2023}]

回到过滤,您将需要构建自己的过滤器来对复杂对象进行排序。这个网站有一个很好的解决方案,几乎是即插即用的:

http://justinklemm.com/angularjs-filter-ordering-objects-ngrepeat/

于 2015-01-14T02:22:15.047 回答