通过常量表达式和手动视图刷新提高AngularJS性能

通过常量表达式和手动视图刷新提高AngularJS性能,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,最近,我在考虑AngularJS应用程序的性能时,您需要提供丰富的域模型和表达式{{},例如,呈现类似于电子表格的模型 我提出了一个非常简单的解决方案,使用constat-watch表达式和ngRepeat覆盖一个stamp-revision属性-: 我的问题是:是否有专门针对这种方法的指令,即当指定的监视值更改时刷新内容?使用ngRepeat可以完成这项工作,但是感觉有点不舒服,不需要子范围 还有:你认为提议的方法有什么问题吗 我看到的一个剩余瓶颈是,使用ngRepeat仍在创建许多作用域,$

最近,我在考虑AngularJS应用程序的性能时,您需要提供丰富的域模型和表达式{{},例如,呈现类似于电子表格的模型

我提出了一个非常简单的解决方案,使用constat-watch表达式和ngRepeat覆盖一个stamp-revision属性-:

我的问题是:是否有专门针对这种方法的指令,即当指定的监视值更改时刷新内容?使用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>