¿Cómo pasar una referencia de función en una directiva recursiva en angular?

Tengo esta directiva:

app.directive('recursiveListItem', ['$http', 'RecursionHelper', function ($http, RecursionHelper) {
    return {
        restrict: 'E',
        scope: {
            parent: '=',
            onNodeClick: '&',
        },
        compile: function (element, attributes) {
            return RecursionHelper.compile(element);
        },
        template:
            '<div class="list-group-item-heading text-muted parent "> \
                <input type="checkbox" data-ng-click="visible = !visible" id="{{parent.Name}}">\
                <label for="{{parent.Name}}">&nbsp;&nbsp;</label>\
                <a href="javascript:void(0)" data-ng-click="onNodeClick({node: parent})">{{parent.Name}}</a> \
            </div> \
            <ul data-ng-if="parent.Children.length > 0" data-ng-show="visible"> \
                <li ng-repeat="child in parent.Children"> \
                    <recursive-list-item data-parent="child" data-on-node-click="onNodeClick"></recursive-list-item> \
                </li> \
            </ul>',     
    };
}]);

y aquí está el ayudante:

app.factory('RecursionHelper', ['$compile', function ($compile) {
    var RecursionHelper = {
        compile: function (element) {
            var contents = element.contents().remove();
            var compiledContents;
            return function (scope, element) {
                if (!compiledContents) {
                    compiledContents = $compile(contents);
                }
                compiledContents(scope, function (clone) {
                    element.append(clone);
                });
            };
        }
    };

    return RecursionHelper;
}]);

Todo funciona a la perfección, pero no consigo mion-node-click trabajar. Para todos los elementos raíz, la "devolución de llamada" funciona bien, pero a partir de ahí, todos los niños no dispararán la devolución de llamada. Creo que tiene algo que ver con pasar la referencia de la función al siguiente elemento secundario de la plantilla.

También he intentadodata-on-node-click="onNodeClick(node)", pero eso tampoco funciona.

¿Alguien sabe cómo pasar la referencia de función a los nodos secundarios?

Respuestas a la pregunta(2)

Su respuesta a la pregunta