Почему эта функция выполняется дважды?

У нас есть древовидная структура.JSBIN здесь

в директиве

scope.add_child_task = function() {
    scope.add_task(scope.path,"child of " + scope.member.name);
    if (!scope.has_children) {
        scope.add_children_element();
        scope.has_children = true;
    }
};

в контроллере

$scope.add_task = function(to,name) { 
    DataFactory.add_task(to,name);
};

Фабрика находит правильную позицию и добавляет узел.

При добавлении дочернего элемента в узлы с существующими дочерними элементамис добавлением двух детей, и я нене понимаю почему.

Благодарю.

РЕДАКТИРОВАТЬ Я могу проигратьhas_children и он все еще дает тот же результат

обновленный JSBIN

Ссылка участника functin

link: function (scope, element, attrs) {            

            element.append(""); 
            $compile(element.contents())(scope);

            scope.get_path = function() { 
                var temp = scope.$parent.get_path();
                temp.push(scope.member.name);
                return temp;
            };
            scope.path = scope.get_path();

            scope.add_child_task = function() {
                scope.add_task(scope.path,"child of " + scope.member.name);
            };
        }

РЕДАКТИРОВАТЬ 2 Также пропущены циклы for - просто обмен ссылками, ничего не осталось, кроме функции, выполняемой дважды!

обновленный JSBIN

Ответы на вопрос(1)

Ваш ответ на вопрос