我有1000个根项目。每个项目都有4个子项目。这些项目中的每一个都有2个可以编辑的约100个元素的集合。 这些元素是延迟加载的,但在最坏的情况下可能会有:1000 * 4 * 2 * 100 = 800k元素可以编辑。
如果有任何版本,我想要启用按钮。 我在每个级别编写函数来确定元素是否被编辑,以及父元素是否有任何编辑过的元素。 root容器还有isEdited函数,它启用/禁用按钮。
但是在每个摘要循环上调用此函数似乎并不是最佳的,因为版本不经常发生。
这个问题有角度解决方案吗? 我的意思是在knockout.js中,父属性可以观察子属性并仅在编辑时更改其值。 所以在我的情况下,isEdition将不会在每个摘要循环上计算。但在版本发生时更新。
我对我的代码进行了分析,发现isEdited()函数需要大部分时间。
答案 0 :(得分:0)
你试过吗
$scope.$watch('bigObjectWithNesting',
function(newV, oldV) { $scope.isEditedFlag = ...; },
true);
或您的方法调用。并在HTML中使用isEditedFlag
。
答案 1 :(得分:0)
如果你watch
,它将始终在每个摘要上计算。您可以在每个根元素上使用ng-change
并将isEditing标志设置为true。您可能需要更多的东西,但这可能是我认为的一种方法。