Edit in JSFiddle

// AngularJS Filter for ordering objects with
// ngRepeat by multiple properties.

app.filter('orderObjectBy', function () {
    return function (items, fields) {
        var filtered = [];

        angular.forEach(items, function (item) {
            filtered.push(item);
        });

        filtered.sort(function (a, b) {
            for (var i = 0; i < fields.length; i++) {
                var field = fields[i],
                    reverse = field.startsWith('-');

                if (reverse) field = field.slice(1);

                if (a[field] === b[field]) continue;

                if (!reverse) return (a[field] > b[field] ? 1 : -1);

                return (a[field] < b[field] ? 1 : -1);
            }
            return 0;
        });

        return filtered;
    };
});