AngularJS Cómo llamar a la función directiva desde el controlador

Estaba buscando una manera de saber cómo llamar a la función dentro de la directiva desde el controlador. Obtuve el recorte pero, por lo tanto, soy nuevo en angular, por eso el siguiente flujo de código no es muy claro. a cualquiera le importa explicar cómo funciona el código. Gracias

<map set-fn="setDirectiveFn(theDirFn)"></map>
<button ng-click="directiveFn()">call directive function</button>

scope: { setFn: '&' },
link: function(scope, element, attrs) {
    scope.updateMap = function() {
       alert('inside updateMap()');
    }
    scope.setFn({theDirFn: scope.updateMap});
}

function MyCtrl($scope) {
    $scope.setDirectiveFn = function(directiveFn) {
        $scope.directiveFn = directiveFn;
    };
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta