以下のコードでmousedownとtouchstartが発火しません。 touchmoveも発火したりしなかったりで安定しません。 何が原因でしょうか? mouseupとtouchendは発火しています。

app.controller('Ctrl', ['$scope', '$resource', '$http', '$interval', '$swipe', '$location', function($scope, $resource, $http, $interval, $swipe, $location) {
  //省略
    $scope.timerStart = function() {
        console.log("timer start");
        time_timer = $interval(function() {
        }, 1000);
        console.log(time_timer);
    };
    $scope.touchMove = function() {
        $interval.cancel(time_timer);
    };
    $scope.touchEnd = function() {
        console.log("touch end");
        $scope.timerStart();
    };
$scope.timerStart();
}])
.directive('timeClick', function() {
    return {
        controller: ['$scope', '$element', '$attrs', '$http', '$interval',
            function($scope, $element, $attrs, $http, $interval) {
                var isTap, isTapped;
                $element.bind('click', function() {
                    if(!isTapped) {
                        return $scope.$apply($attrs['hogeClick']);
                    }
                });
                $element.bind('touchstart', function() {
                    console.log('touch start');
                    return isTap = true;
                });
                $element.bind('mousedown', function() {
                    console.log('mouse down');
                    return isTap = true;
                });
                $element.bind('touchmove', function() {
                    $scope.touchMove();
                    return isTap = false;
                });
                return $element.bind('touchend mouseup', function() {
                    $scope.touchEnd();
                    if(isTap) {
                        isTapped = true;
                        return $scope.$apply($attrs['hogeClick'], $element);
                    }
                });
            }
        ]}
    }
);