2016-01-28 120 views
1

我對Angular相對較新,所以請原諒我的錯誤,如果有的話。我必須修改並使用NgModules這個treeview指令。它的代碼看起來很有前途,但我必須稍微修改它以添加添加/刪除或修改項目的功能。TreeView與Angular指令

Plunker

我以前使用jQuery創建我的TreeView和已經完成所有相關任務。但是因爲我決定轉向Angular,所以我必須以角度來做。

所以只要我能理解這個指令使用嵌套遞歸指令來創建樹,這是一種有效的方式來做到這一點。它工作正常,但我會有一些3000-4000項目在我的樹視圖中顯示。所以當我用這個代碼做這件事時,由於許多手錶表達式(每件5-7件),它會減慢屏幕並消耗大量內存。

Plunker

我已經試過一次在NG-重複使用::符號結合。這有很大的幫助,但現在我無法實現我的添加或更新方法。有什麼辦法可以做到這一點?

<li data-ng-repeat="node in ::' + treeModel + '"> 

回答

1

https://plnkr.co/edit/KwnvyslibWd1dmIXxBYU?p=preview

您已經有了範圍內選擇的節點,所以索性推新節點到它的孩子陣列。

$scope.AddNode = function(NewNode) 
    { 
     NewNode = {"roleName" : NewNode , "roleId" : "role11", "children" : []}; 
     $scope.mytree.currentNode.children.push(NewNode); 
    }; 

編輯:名稱建議 - 它是一次性綁定,所以添加/刪除不會在這裏工作。我認爲瀏覽器在嘗試顯示一次數據量時會有點卡住是正常的。相反,你可以按位添加節點,比如說20步。或者你也可以看看其他的圖書館。 This one使您可以選擇顯示首先摺疊的節點數組。

+1

感謝您使我們的編輯。是的,一次綁定不會讓編輯或修改數組。正如你所說的按位添加節點。我已經打算在用戶點擊後異步添加子項。但是說一個節點有100個子節點(它會有)。這會減慢樹的速度。所以這是問題。 – geekowls