Manipulando DOM no angularJS: melhores práticas?

Estamos construindo um grande aplicativo Web usandoAngularJS. Usamos muito a diretiva personalizada para casos diferentes. Quando se trata de manipulação de DOM, evento de ligação, etc ... Ocorre que definimos funções que manipulam o DOM em uma diretiva personalizada.link , mas chamamos isso do controlador (definimos funções no$scope para que possa ser acessível pelo controlador fornecido). Eu acho que a maneira angular de fazê-lo seria definir uma diretiva personalizada separada para cada função e usá-la diretamente do modelo, mas, no nosso caso, não sei até que ponto será confortável fazê-lo, já temos muita diretiva personalizada, por isso é ruim fazer o que estamos fazendo (função de definição que manipula o DOM em uma diretiva e a chama de controlador), isso tem algum significado ou é como se estivéssemos manipulando o DOM no controlador ? Para nós, é meio preocupante a separação, nunca definimos funções que manipulam o DOM no controlador, apenas na diretiva, mas chamá-lo do controlador não parece ser tão certo, é?

Um exemplo mostrando como é a nossa diretiva personalizada:

angular.module('exp', []).directive('customdirectiveExp', ['', function(){
// Runs during compile
return {
    name: 'customDirectiveExp',
    controller: "ControllerExp",
    controllerAs: "ctrl",
    templateUrl: 'templateExp',
    link: function($scope, iElm, iAttrs, controller) {

        /* These function will be called from the ControllerExp when it needs so.
         Function can do any things like manipulating the DOM, addin
         event listner ...
        */
        scope.manipulateDom1 = function(){
            // DOM manipualtion
        };

        scope.manipulateDom2 = function(){
            // DOM manipualtion
        };

        scope.manipulateDom3 = function(){
            // DOM manipualtion
        };

    }
};
}]);

questionAnswers(1)

yourAnswerToTheQuestion