Comportamento do controlador dentro de diretivas

Eu sei que um$scope a partir de umcontroller pode ser compartilhado com uma função de linkdirectives.

Por exemplo, neste código, posso chamar uma função do controlador declarado para imprimir 'Hello World' no console do navegador:

 .directive('myDirective', [function () {
        return {
            restrict : 'E',
            replace : true,
            controller: 'MyController',
            templateUrl : 'directives/myDirective.tpl.html',
            link : function (scope, elem, attrs, controller) {
                scope.message = 'Hello World!';
            }
        };
    }])

    .controller('MyController', [function ($scope, $element, $attrs, $log, $timeout) {

        // $timeout to wait the link function to be ready.
        $timeout(function () {
            // This prints Hello World as expected.
            $log.debug($scope.message);
         });


        });
    }])

Ok, isso funciona bem.

Minhas perguntas são:

Nesta abordagem, é oMESMO escopo que será compartilhado entre o controlador e a diretiva?Quais são as consequências para usar essa abordagem? Vamos supor que eu vounão manipularDOM elementos emcontroller, somente emlink function.Eu realmente preciso evitar manipular elementos DOM nestecontroller? Mesmo se o$scope, $elem, etc são os mesmos?

Estas são perguntas que eu não encontreiDocumentação da Diretiva Angular.

Aqui está um plunker com o código de exemplo.

questionAnswers(3)

yourAnswerToTheQuestion