Q:

Acessar function declarada na controller da directive pelos objetos transclude

Estou tentando criar uma directive que tem seu scope isolado, mas que tenha algumas funções que ela estará responsável de fazer p/ directive. É uma div que contém uma table e um botão "Adicionar" ao clicar no adicionar abrirá abaixo da table um tipo formulário pra alimentar aquela table. Usei transclude p/ este formulário e gostaria de ao clicar em um determinado button (incluso no transclude) venha executar as functions que determinei na directive p/ copiar os registros pra table de forma dinamica, para que não venha a cada controller que usar esta diretiva tenho que fazer tudo na mão esta funcionalidade. Segue os códigos abaixo:
HTML Directive:
<div class="form-horizontal panel panel-default panel-group">
    <div class="panel-heading">
        <div class="form-group">
            <div  ui-grid="options" class="grid" />
        </div>
    </div>
    <div class="panel-footer" style="margin-top: -25px;">
        <div style="text-align: right;">
            <button type="button" class="btn btn-success" data-toggle="collapse" data-target="#divForm{{idGrid}}">Adicionar</button>
        </div>
        <div id="divForm{{idGrid}}" class="collapse">
            <br>
            <ng-transclude></ng-transclude>
        </div>
    </div>
</div>

grid-form.directive.js :
(function() {
    'use strict';

    angular
        .module('controlwebApp')
        .directive('gridForm', gridForm);

    function gridForm () {
        var directive = {
            restrict: 'E',
            transclude: true,
            scope: {
                options: '=',
                idGrid: "@idGrid"
            },
            templateUrl: 'app/components/grid/gridform/grid-form.directive.html',
            bindToController: {
                teste: '&'
            },
            controller: function (){
                this.teste = function(){
                    console.log("Teste Calling!!")
                }
            },
            controllerAs: 'ctrl'
        };

        return directive;
    }

})();

Uso da directiva:
 <div class="form-group">
        <grid-form id-grid="grid1" options="vm.gridOptions">
            <div class="form-horizontal">
                <label class="control-label" for="field_qtdEstoqueMax">Qtd Estoque Max1</label>
                <input type="number" class="form-control" name="qtdEstoqueMax" id="field_qtdEstoqueMax" ng-model="vm.produto.qtdEstoqueMax" />
                <label class="control-label" for="field_qtdEstoqueMax">Qtd Estoque Max2</label>
                <input type="number" class="form-control" name="qtdEstoqueMax" id="field_qtdEstoqueMax" ng-model="vm.produto.qtdEstoqueMax"/>
                <button type="button" class="btn btn-primary" ng-click="ctrl.teste()">Save me</button>
            </div>
        </grid-form>
    </div>

A:

Você pode criar um objeto para servir de ponte entre os escopos do controller e da directive; O conteúdo transportado terá assim acesso aos métodos implementados pela diretiva.
Exemplo funcional abaixo:

angular.module('myApp', [])
.directive('transcludeableDirective', function() {
  return {
    scope: {
      bridgeObject: "="
    },
    templateUrl: 'myTranscludeTemplate',
    transclude: true,
    controller: function($scope) {

      // Diretiva implementa evento event()
      $scope.bridgeObject.event = function(){
        alert('Evento da diretiva chamado!');
      };
    },
  };
})
.controller('myController', function($scope){
  $scope.bridge = {}; // Note que o controller não implementa o método.
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script>
<div ng-app="myApp">
  <div ng-controller='myController'>
    <div transcludeable-directive bridge-object='bridge'>
      TESTE
      <button ng-click='bridge.event()'>CLICK!</button>
    </div>
    <script type="text/ng-template" id="myTranscludeTemplate">
      <h2><div ng-transclude></div></h2>
    </script>  
  </div>
</div>

