2014-09-08 4 views
0

내 문제와 일치하는 기존 질문을 찾으십시오.각도 정렬이 작동하지 않습니다.

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 출력을 반환 않도록 제가보기에이 일을해야 ...

누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

답변

1

역방향 (옵션) 부울 배열의 역순 .

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

reverse

그것은 true 또는 false로 설정 될 필요가 변수입니다. 정의되지 않은 변수를 사용하면 "거짓"이므로 역순으로 말하지 않은 것처럼 동작합니다. $scope.reverse = true을 추가하면 제대로 작동합니다.

편집 : 사실, 당신은 아마 수행해야합니다

+0

감사합니다! 방금 같은 일을 나 자신도했습니다! purchaseDate의 조건 - Date를 파싱하고 그 시대를 반환하는 함수를 만들었습니다. 지금 product_summary.purchase_date가 작동하는지 확인하겠습니다. –

+0

은 ISO86012 형식의 문자열 날짜를 정렬 할 수 없다고 판명되었습니다. 그래서 시대에 맞게 변환하는 함수에 남겨 두었습니다. –

0

OK 여기서 purchaseDate하여 주문

orderBy:'productSummary.purchaseDate':reverse 

을뿐만 아니라, 난 그냥 해 orderBy에 두 번째 매개 변수는 '아니라는 것을 깨달았다 반대로 ', 그것은 반대로 진실하다, 반대로 거짓이 아니다.

문서를 올바르게 읽어야합니다 ....