通过常量表达式和手动视图刷新提高AngularJS性能
最近,我在考虑AngularJS应用程序的性能时,您需要提供丰富的域模型和表达式{{},例如,呈现类似于电子表格的模型 我提出了一个非常简单的解决方案,使用constat-watch表达式和ngRepeat覆盖一个stamp-revision属性-: 我的问题是:是否有专门针对这种方法的指令,即当指定的监视值更改时刷新内容?使用ngRepeat可以完成这项工作,但是感觉有点不舒服,不需要子范围 还有:你认为提议的方法有什么问题吗通过常量表达式和手动视图刷新提高AngularJS性能,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,最近,我在考虑AngularJS应用程序的性能时,您需要提供丰富的域模型和表达式{{},例如,呈现类似于电子表格的模型 我提出了一个非常简单的解决方案,使用constat-watch表达式和ngRepeat覆盖一个stamp-revision属性-: 我的问题是:是否有专门针对这种方法的指令,即当指定的监视值更改时刷新内容?使用ngRepeat可以完成这项工作,但是感觉有点不舒服,不需要子范围 还有:你认为提议的方法有什么问题吗 我看到的一个剩余瓶颈是,使用ngRepeat仍在创建许多作用域,$
我看到的一个剩余瓶颈是,使用ngRepeat仍在创建许多作用域,$rootScope.broadcast可能会有点昂贵。但总的来说,这可以大大提高页面性能。ngRepeat的速度很慢。您最好只通过JS构建一个模板,然后$compile它。然后可以在表达式中使用常量作为网格引用,如items[x][y],我建议在有意义的地方重新使用角度指令。如果需要速度,可以创建自己的自定义指令,并自己操作DOM和连接事件处理程序,以便可以控制何时调用$scope.$apply。
<!-- Outer ngRepeat is on a watched dummy object - when changed, ngRepeat will re-generate its contents -->
<ul ng-repeat="stamp in [data.stamp]">
<!-- Inner constant ngRepeat, which can be pretty expensive in case of long iterations -->
<li ng-repeat="item in ::data.items">
Item {{::item.value}}.
</li>
</ul>