我有一个树形结构.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;
}
};
Run Code Online (Sandbox Code Playgroud)
在控制器中
$scope.add_task = function(to,name) {
DataFactory.add_task(to,name);
};
Run Code Online (Sandbox Code Playgroud)
工厂正在找到正确的位置并添加节点.
将子项添加到具有现有子项的节点时,它会添加两个子项,我不明白为什么.
谢谢.
编辑
我可以输has_children,它仍然会产生相同的结果
会员链接功能
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);
};
}
Run Code Online (Sandbox Code Playgroud)
编辑2也 改变了for循环 - 只是交换引用,没有剩下任何东西,但是一个函数被执行两次!