¿Por qué esta función se ejecuta dos veces?
Tengo una estructura de árbol.JSBIN aquí
en la directiva
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;
}
};
en el controlador
$scope.add_task = function(to,name) {
DataFactory.add_task(to,name);
};
La fábrica está encontrando la posición correcta y agregando el nodo.
Cuando se agrega un niño a los nodos con niños existentes, se agregan dos niños y no entiendo por qué.
Gracias.
EDITAR Puedo perderhas_children
Y todavía produce el mismo resultado.
Enlace de miembros 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);
};
}
Editar 2 También se eliminaron los bucles for: ¡solo se intercambian referencias, no queda nada más que una función que se ejecuta dos veces!