我有一個樹形結構。 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);
};
工廠找到正確的位置和加入的節點。
當添加一個孩子到有現有孩子的節點時,它添加了兩個孩子,我不明白爲什麼。
感謝。
編輯 我可以失去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);
};
}
EDIT 2 DROP掉的for循環,以及 - 只是交換引用,除了函數e,執行兩次!
這是沒有答案,但在 「add_children_element()」你正在調用「scope.has_children = true;」和「add_task()」。 檢查你是否沒有在你的DataFactory中重複這個錯誤,並嘗試記錄(console.log)代碼的確切含義。 – Neozaru
我相信你想在第一個函數體內使用'this',而不是'scope' –
@Mark Reed--你能解釋一下嗎? '這個'而不是什麼? – haki