我正在AngularJs中开发一个需要文件夹树的页面。这个文件夹树是用ng-repeat制作的,它遍历一个元素数组。 今天我开始开发拖放功能来拖动文件夹中的文件。我使用了Sortable来实现拖放功能,但是,因为我不想重新排序树而是要删除INSIDE元素,我将行封装在另一个只包含该行的div中,这样当我在里面拖动时我可以诱骗用户认为我正在丢弃文件夹。
所以结构基本上是这个
<div class="node-dnd-container" ng-repeat="node in nodes">
<div class="node">
<!-- folder/file title, icon..... --->
</div>
</div>
在我发现掉落发生之后,我做了一些神奇的事情来改变父结构,并且内部的所有孩子都刷新了连接到ng-repeat的模型。
现在发生的有趣的事情是刷新ng-repeat模块但是我没有在html中有一个node-dnd-container,里面有两个节点(因为拖放)。所以基本上ng-repeat正确刷新但不是正确的顺序,在ng-repeat中有一些不应该存在的东西。
我可以使用angular.copy修复此问题并对模型进行深层复制,但随后又与控制器分离,如果我在控制器中更改某些内容,则不会反映在视图中。
TL-DR:如何在没有深层处理的情况下完全刷新ng-repeat(刷新哈希值)(从控制器中分离视图)