AngularJS Como chamar a função de diretiva do controlador

Eu estava procurando uma maneira de saber como chamar a função dentro da diretiva do controlador. Eu tenho o snip, mas, portanto, eu sou novo em angular é por isso que o fluxo de código abaixo não é muito claro. Alguém se importa em explicar como o código está funcionando. obrigado

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

questionAnswers(3)

yourAnswerToTheQuestion