2016-01-28 78 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