角度顺序在ng-repeat中不起作用

时间:2014-09-08 23:28:05

标签: angularjs ng-repeat angularjs-orderby

找不到符合我问题的任何现有问题......

OrderBy并不适合我;我已经归结为以下示例代码:

控制器:

'use strict';

angular.module('angularSampleApp')
.controller('MainCtrl', function($scope) {

    $scope.products = [{
        product_summary: {
            purchase_id: 225,
            purchase_date: '2014-09-05T08:58:59+10:00',
            title: 'Product 1',
        }
    }, {
        product_summary: {
            purchase_id: 226,
            purchase_date: '2014-09-05T11:34:28+10:00',
            title: 'Product 2',
        }
    }];

    $scope.purchaseDate = function(product) {
      return Date.parse(product.product_summary.purchase_date);
    }

});

并查看:

<ul>
  <li ng-repeat="product in products | orderBy:purchaseDate">
  {{product.product_summary.title}} : {{product.product_summary.purchase_date}}
</ul>

<ul>
  <li ng-repeat="product in products | orderBy:purchaseDate:reverse">
  {{product.product_summary.title}} : {{product.product_summary.purchase_date}}
</ul>

两个列表的顺序相同。

据我所知,我正确地做事 - purchaseDate函数返回一个int的Date.parse输出,所以据我所知,这应该有用......

任何人都可以看到我做错了吗?

2 个答案:

答案 0 :(得分:1)

  

反向   (可选的)   布尔   颠倒数组的顺序。

https://docs.angularjs.org/api/ng/filter/orderBy

reverse是一个变量,需要设置为true或false。如果你使用一个未定义的变量,它就是&#34; falsy&#34;,所以它表现得好像你没有告诉它要反转。添加$scope.reverse = true即可。

编辑:实际上,您可能需要这样做:

orderBy:'productSummary.purchaseDate':reverse 

也可以通过purchaseDate订购

答案 1 :(得分:0)

好的,我刚刚意识到orderBy的第二个参数不是“反向”,反转是真的,反之则是假。

应该正确阅读文档....