Warum wird diese Funktion zweimal ausgeführt?

Ich habe eine Baumstruktur.JSBIN hier

in der Richtlinie

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

in der Steuerung

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

Die Fabrik findet die richtige Position und fügt den Knoten hinzu.

Beim Hinzufügen eines Kindes zu Knoten mit vorhandenen Kindern werden zwei Kinder hinzugefügt, und ich verstehe nicht, warum.

Vielen Dank.

BEARBEITEN Ich kann verlierenhas_children und es erzeugt immer noch das gleiche Ergebnis

JSBIN aktualisiert

Mitgliedslink functin

link: function (scope, element, attrs) {            

            element.append("<collection></collection>"); 
            $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);
            };
        }

BEARBEITEN 2 Löschte auch die for-Schleifen - tauschte nur Referenzen aus, es blieb nichts anderes übrig, als eine Funktion, die zweimal ausgeführt wurde!

JSBIN aktualisiert

Antworten auf die Frage(1)

Ihre Antwort auf die Frage