My mistake

HTML

<div ng-controller="myCtrl">
    <div dynamic-class="'tooltip'" dynamic-class-when="add">
        test
    </div>
</div>

CSS

.tooltip {
    color: blue;
}

JavaScript

var app = angular.module('myApp', []);

function myCtrl($scope, $timeout) {
    $timeout(function() {
        $scope.add = true;
    },1000);
}
app.directive('dynamicClass', function($compile) {
    return {
        scope: {
            dynamicClassWhen: '=',
            dynamicClass: '='
        },
        link: function(scope, elt, attrs) {
            scope.$watch('dynamicClassWhen', function(val) {
                if (val) {
                    console.log(val);
                    elt.addClass(scope.dynamicClass);
                    $compile(elt)(scope);
                }
            });
        }
    };
});
app.directive('tooltip', ['$timeout', '$location', '$compile', function (timer, $location, $rootScope) {
    return {
        restrict: 'C',
        transclude: true,
        link: function (scope, element) {
            alert('test');
        }
    };
}]);