Manipulieren von DOM in angleJS: Best Practice?

Wir erstellen eine große Webanwendung mitAngularJS. Wir verwenden häufig benutzerdefinierte Direktiven für verschiedene Fälle. Wenn es darum geht, DOM-Manipulationen, Bindungsereignisse usw. durchzuführen. Es kommt vor, dass wir Funktionen definieren, die das DOM in @ einer benutzerdefinierten Direktive manipulierelink -Funktion, aber wir rufen es von der Steuerung aus auf (wir definieren Funktionen in der$scope, damit der angegebene Controller darauf zugreifen kann). Ich denke, die eckige Art, dies zu tun, wäre, eine separate benutzerdefinierte Direktive für jede Funktion zu definieren und sie direkt aus der Vorlage zu verwenden, aber in unserem Fall weiß ich nicht, bis zu welchem Punkt es bequem sein wird, dies zu tun, haben wir bereits Bei vielen benutzerdefinierten Direktiven ist es also SCHLECHT, das zu tun, was wir tun (indem Funktionen definiert werden, die das DOM in einer Direktive manipulieren und vom Controller aus aufrufen), hat dies sogar eine Bedeutung oder es ist so, als würden wir das DOM im Controller manipulieren ? Für uns ist es eine Art Trennung, wir definieren niemals Funktionen, die das DOM im Controller manipulieren, sondern nur in Direktiven, aber der Aufruf vom Controller scheint nicht so richtig zu sein, oder?

Ein Beispiel, das zeigt, wie unsere benutzerdefinierte Direktive aussieht:

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
        };

    }
};
}]);

Antworten auf die Frage(2)

Ihre Antwort auf die Frage