CountDown sencillo en Angular

Una directiva muy simple para hacer un count down, simplemente eso.

["$interval", function($interval) {
    return {
        // Restringido a usarse solo como elemento
        restrict: "E",
        // Reemplazamos el elemento actual
        replace: true,
        template: '<span class="count-down" ng-show="interval"><i></i> seconds</span>',
        scope: {
            time: "="
        },
        link: function(scope, element) {
            var e = element.find('i');
            scope.interval = null;

            var update = function() {
                // Tiempo actual
                var now = (new Date()).getTime();

                // Diferencia
                var diff = Math.round((scope.time - now) / 1000);

                e.text(diff.toString(10));

                // Si llegamos a 0, detenemos el interval
                if (diff <= 0) {
                    $interval.cancel(scope.interval);
                    scope.interval = null;
                }

            };

            // Si la propiedad del scope time cambia, actualizamos
            // nuestro contador
            scope.$watch("time", function () {

                // Si lla existe un interval anterior, lo cancelamos
                if (scope.interval) {
                    $interval.cancel(scope.interval);
                    scope.interval = null;
                }

                if (scope.time && scope.time > (new Date()).getTime()) {
                    update();
                    scope.interval = $interval(update, 500);
                }

            });

        }
    };

}]

La pueden probar acá: https://codepen.io/exos/pen/oLwAgQ?editors=0011