【问题标题】:Angular 1.6 many instances of the same component on a pageAngular 1.6页面上同一组件的许多实例
【发布时间】:2017-08-01 03:59:09
【问题描述】:

我在ng-repeat 中有一个组件,有时它会创建大量组件(超过 1000 个),从而导致页面加载出现明显延迟(几秒钟)。 Profiler 显示所有导致明显延迟的代码都在 angular 或 angular-select (由我的自定义组件使用)内执行,因此它与我的代码无关,尽管它可能与我正在设置的某些手表有关。

处理这个问题的常用方法是什么?是否可以只初始化一次组件并创建多个实例而无需调用相同的代码数千次?

【问题讨论】:

  • 是否可以只初始化一次组件并创建多个实例 否。修改组件以尽可能不使用数据绑定。不要一次显示 1000 个组件。使用自定义解决方案而不是 ng-repeat。这是通常的做法。
  • 请分享您的代码。您是如何添加手表的
  • 使用分页之类的,为什么要显示1000个组件?
  • @estus 我认为您的评论应该是答案。
  • 当然,如果您认为它确实回答了您的问题。

标签: javascript angularjs components


【解决方案1】:

通常一个组件不能被初始化一次并被克隆。纯静态组件是可能的,但编译不会成为这种情况下的瓶颈。

当有大量组件/指令实例必须同时显示时,必须将它们修改为尽可能不使用数据绑定,或者使用一次性观察者。这样一来,观察者的数量就会保持在一个理想的范围内(通常是大约 1000 个观察者)。

可以使用自定义解决方案代替 ng-repeat 来提高性能。最好不要一次显示 1000 个组件。

Angular 有几种无限滚动解决方案,可将项目限制为可见区域中显示的项目。

【讨论】:

    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多