Ng-repeat with ng-hide或在控制器中执行该工作以提高性能
Ng-repeat with ng-hide OR do the job in the controller for improved performance?
这个问题很简单,但我确信它为应用程序开发提供了附加价值。
在性能方面,使用
是否更好?ng-repeat="r in roads", ng-hide="r.distance > 1000"
或者在控制器中推送数组中的项更好,像这样:
for (var i in $scope.roads) {
var road = $scope.roads[i];
if (road.distance <= 1000) $scope.roadsToShow.push(road);
}
然后使用,就像这样重复?
ng-repeat="r in roadsToShow"
就更好的性能而言,哪个被认为是最佳实践?假设数组中的对象超过1000个
过滤数组会明显更好,原因如下:
最重要的是ng-hide
需要创建一个内部手表,手表是昂贵的,可能会导致性能瓶颈
其次,将有更少的dom节点来渲染
也有很多方法可以在angular中进行过滤。
不要在ng-repeat
中使用ng-hide
、ng-show
、ng-if
等作为过滤工具
最好在控制器或服务器上过滤数组项,而不是在呈现后隐藏它们。如果在显示数组之前对其进行过滤,浏览器就不需要呈现与该项关联的DOM,然后再花时间隐藏它。请记住,使用ng-hide
将CSS类display: none
应用于元素,因此节点存在但不可见。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- javascript扫雷器floodfill算法不能正常工作