У меня есть древовидная структура. JSBIN hereПочему эта функция выполняется дважды?
в директиве
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);
};
Завод найти правильное положение и добавление узла.
При добавлении ребенка в узлы с существующими детьми он добавляет двух детей, и я не понимаю, почему.
Спасибо.
EDIT я могу потерять has_children
и она по-прежнему дает тот же результат, связь
Член 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);
};
}
EDIT 2 падает на порядок для петель, а также - просто обмениваясь ссылками, ничего не оставалось, кроме функции e вырезано дважды!
Это не ответ, но в "add_children_element()" вы вызываете «scope.has_children = true;», а также в «add_task()». Проверьте, не повторили ли вы эту ошибку в DataFactory и попробуйте log (console.log), что именно делает код. – Neozaru
Я считаю, что вы хотите 'this' внутри первого тела функции, а не' scope' –
@Mark Reed - не могли бы вы объяснить? 'это' вместо чего? – haki