2014-12-26 2 views
0

내 웹 응용 프로그램에서 날짜순으로 이벤트를 주문하려고합니다 (이 경우에는 내 db의 '시작'날짜). 날짜가 제대로 정렬되지 않은 문제가 있습니다. 내 '시작'필드가 문자열이기 때문에 날짜순보다는 알파벳순으로 정렬한다고 생각합니다. 내 질문은 올바른 순서에 대해이 필드를 날짜로 가장 잘 변환하는 방법입니까? 아래에 관련 코드 :날짜 문자열이있는 각도 orderBy

HTML :

<div ng-repeat="event in events | orderBy:'start'">{{event.city}}</div> 

각도 컨트롤러 :

angular.module('MainCtrl', []).controller('MainController', function($scope, $routeParams, Events) { 

    // pull empty event details from API based on routeParams to get all events 
    $scope.id = ''; 

    Events.get($scope.id).success(function(response) { 
     $scope.events = response; 
    }); 
}); 

샘플 데이터베이스 개체 : 매우 간단한 해결책으로 밝혀졌다

{ 
    "_id": { 
     "$oid": "54978d87ac1e3caaeee8452c" 
    }, 
    "event": "New Years Eve - Times Square", 
    "city": "New York", 
    "state": "New York", 
    "date": "December 31, 2014", 
    "start": "December 31, 2014", 
    "end": "January 1, 2015", 
    "radius": "400", 
    "team_1": "", 
    "team_2": "", 
    "object_id": "10897094", 
    "longitude": "-73.9848931", 
    "latitude": "40.7591529", 
    "photos": [] 
} 
+1

데이터를 반환하는 컨트롤러 또는 서비스의 날짜 개체로 필드를 변환합니다. – PSL

답변

2

. 다음 코드를 내 컨트롤러에 내 Events.get 안에 추가했습니다.

for (var i = 0, max = response.length; i < max; i++) { 
     $scope.events[i].start = new Date(response[i].start); 
} 
+1

또는 더 짧은'angular.forEach ($ scope.events, function (event) {event.start = new Date (event.start);});':) – PSL

+0

안녕하세요 매트, 어떻게 브라우저에 표시 되나요? 날짜가 "31AUG2016 21:26:11"로 표시되고 오름차순 및 내림차순으로 원하는 시나리오는 동일한 도움을 줄 수 있습니까 .. 감사합니다. –

+0

@DelliKilari이 경우 객체에 새로운 속성을 설정하고 싶다면'event.preformattedDate'와'orderBy : preformattedDate'를 대신 사용하십시오. –