我在 $rootScope 中有一个大对象(例如 > 100 个对象,并且每个对象再次具有对象/数组的层次结构),我想通过 deepWatching 来 $watch 整个 $rootScope(即将 $watch 的第三个参数变为 TRUE)。
但这里的问题是,$watch 返回 2 个对象(即一个 Old RootScope 和 Modified RootScope)。然后我必须检查 $rootScope 中对象的哪些属性及其层次结构发生了变化,以将其推入堆栈。
在观看 $scope 时,我们是否有一种简单的方法来更改确切的属性?
$scope.$watch($rootScope, function(oldObj, newObj){
//all I want here is exactly what attribute changed, NOT entire objects!
}, true);
或者,我可以在 Object 的每个属性上添加 watch,但它似乎非常昂贵。
在 Angular js 中实现撤消/重做的最佳方法是什么?
注意:-
角度历史不适合我的需要,因为我想查看对象的所有属性,其中可能还包含其他对象和数组。
我确信观看整个 $rootScope 也不是一个好主意,但我的目标是构建一个具有多个网格、拖放、可能包含表单、可以删除元素的 UI。所以我想构建一个整体解决方案来堆叠更改并在 CTRL + Z 上撤消它。想象一下复制桌面版本的 Photoshop。