Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转换期间AngularJS子窗体的性能_Javascript_Ajax_Angularjs_Angular Ui - Fatal编程技术网

Javascript 转换期间AngularJS子窗体的性能

Javascript 转换期间AngularJS子窗体的性能,javascript,ajax,angularjs,angular-ui,Javascript,Ajax,Angularjs,Angular Ui,很抱歉,这不是一个纯粹的编程问题,只是试图理解为什么修复可以工作 我正在使用angular ui构建表单。当完成表单的步骤时,我有一个进行变换的滑动动画。这不一定是问题的一部分,因为我通常会在动画中获得60+fps 但是,表单的一部分是,如果用户在ajax调用中填充了多个子表单元素,那么将它们添加到dom中等操作太多,并且它们的抖动也很大 我通过对ng重复的子表单元素应用ng if=“isLoaded”来解决这个问题。然后在ajax调用完成时设置$scope.isLoaded=true <

很抱歉,这不是一个纯粹的编程问题,只是试图理解为什么修复可以工作

我正在使用angular ui构建表单。当完成表单的步骤时,我有一个进行变换的滑动动画。这不一定是问题的一部分,因为我通常会在动画中获得60+fps

但是,表单的一部分是,如果用户在ajax调用中填充了多个子表单元素,那么将它们添加到dom中等操作太多,并且它们的抖动也很大

我通过对ng重复的子表单元素应用ng if=“isLoaded”来解决这个问题。然后在ajax调用完成时设置$scope.isLoaded=true

<div ng-repeat="item in employmentHistory" ng-if="isLoaded" ng-form="subForm">

有人能解释一下为什么这会让动画表现得更好吗?我看了看时间线,看起来大部分火焰图都消失了

我知道ng如果不将元素添加到DOM中,这会有所帮助,但即使它在几秒钟后添加了元素,它似乎也帮了大忙


谢谢

AFAIR ng if的工作方式是,在条件计算为true之前,元素不会加载到DOM中(或者,在条件计算之前,元素会从DOM中删除)。随着DOM的大小大大减小,您可能会看到性能的大幅提高


Ref:

因此,在启动动画和加载dom之间的秒差非常有帮助!我很惊讶,实际上也很高兴修复这么简单。