2016-06-20 3 views
0

Почему следующий код не сортирует по дате? Поэтомуng-repeat сортировать по дате не работает

http://jsfiddle.net/eliaweiss/1cs3xbtd/1/

HTML

<div ng-app> 
    <script type="text/javascript" src="http://code.angularjs.org/1.0.1/angular-1.0.1.js"></script> 
    <div ng:controller="Main"> 
     <div ng:repeat="(id, i) in items | orderBy:'date'">{{id}}: {{i.date | date}}</div> 
    </div> 
</div> 

JS

function Main($scope) { 
    $scope.items = { 
     0: {date: new Date('12/23/2013')}, 
     1: {date: new Date('12/23/2011')}, 
     2: {date: new Date('12/23/2010')}, 
     3: {date: new Date('12/23/2015')} 
    }; 
} 
+0

Возможный дубликат [даты не правильно отсортированные в Angular.js] (HTTP: // StackOverflow. com/questions/21023052/date-not-proper-sorted-in-angle-js) –

+0

Я уверен, что столкнулся с чем-то похожим на это и обнаружил, что порядок не работает с объектами. – Tim

ответ

3

Проблема очень проста .... JavaScript объекты не упорядочены и orderBy работает только для массивов

Изменение структура модели для arr ау

0

Что charlietfl говорит:

JS:

var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) { 
    $scope.items = [ 
    { 
     id: 0, 
     date: new Date('12/23/2013') 
    }, 
    { 
     id: 1, 
     date: new Date('12/23/2011') 
    }, 
    { 
     id: 2, 
     date: new Date('12/23/2010') 
    }, 
    { 
     id: 3, 
     date: new Date('12/23/2015') 
    }]; 
}) 

HTML:

<div ng-app="myApp" ng-controller="myCtrl"> 
    <div ng:repeat="i in items | orderBy:'date'">{{i.id}}: {{i.date | date}}</div> 
</div> 
Смежные вопросы