Tôi có cấu trúc cây. JSBIN hereTại sao chức năng này được thực hiện hai lần?
trong chỉ thị
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;
}
};
trong bộ điều khiển
$scope.add_task = function(to,name) {
DataFactory.add_task(to,name);
};
Nhà máy là tìm đúng vị trí và bổ sung thêm các nút.
Khi thêm trẻ vào các nút có con hiện tại, việc thêm hai trẻ em và tôi không hiểu tại sao.
Cảm ơn.
EDIT tôi có thể mất has_children
và nó vẫn tạo ra kết quả tương tự liên kết
Member 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 đã đánh rơi cho vòng cũng - chỉ trao đổi tài liệu tham khảo, không có gì còn lại nhưng chức năng là e xé hai lần!
Đây không phải là câu trả lời, nhưng trong "add_children_element()" bạn đang gọi "scope.has_children = true;" và trong "add_task()" nữa. Kiểm tra xem bạn đã không lặp lại lỗi này trong DataFactory chưa, và cố gắng đăng nhập (console.log) mã nào chính xác. – Neozaru
Tôi tin rằng bạn muốn 'this' bên trong nội dung hàm đầu tiên, không phải' scope' –
@Mark Reed - bạn có thể giải thích không? 'này' thay vì cái gì? – haki