Angular: Sorting by date

http://angularjs.org/

by manoj

HTML

<div ng-app="app">
    <script type="text/javascript" src="http://code.angularjs.org/snapshot/angular.js"></script>
    <div ng:controller="Main">
        <div ng:repeat="item in items | toArray | orderBy: 'date'">
            {{item.$key}}: {{item.date | date}}
            <button ng-click="remove(item)">Remove</button>
        </div>
        <button ng-click="add()">Add</button>
    </div>
</div>

JavaScript

angular.module('app', [])

.controller('Main', function Main($scope) {
    $scope.nextKey = 4;
    $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')}
    };
    
    $scope.remove = function(item) {
        delete $scope.items[item.$key];
    };
    
    $scope.add = function() {
        $scope.items[$scope.nextKey] = { date: new Date() };
        $scope.nextKey += 1;
    };
 })

.filter('toArray', function () {
    'use strict';

    return function (obj) {
        if (!(obj instanceof Object)) {
            return obj;
        }
        var result = [];
        angular.forEach(obj, function(obj, key) {
            obj.$key = key;
            result.push(obj);
        });
        return result;
    }
});