在AngularJS中缓存复杂指令

时间:2014-05-08 14:53:49

标签: javascript angularjs cordova

我正在开发一个主要针对移动设备的项目。 应用程序从服务器接收一个不同对象的列表,这些对象应一次全部呈现。 每个对象类型都有自己的指令,它负责业务逻辑。但是因为大多数对象共享我们创建的某些特征&sub-directives'作为mixins工作,以保持干燥。

如果不仅要显示少数这些对象(这是默认情况),Angular需要花费很长时间来解析和实例化那些指令+子指令。

到目前为止我们的绩效改进:

  • 用自定义指令替换了ng-repeat,它也像无限滚动一样
  • 使用bindonce限制绑定仅在真正需要的地方
  • 使用模板预填充$ templateCache,而不是提取 他们通过templateUrl

但即使有了这些改进,性能仍然是不可接受的。 (特别是在导航到包含列表的状态时)

我现在想到的方法如下:

  1. 让Angular完全解析并创建一个这样的指令及其
    子指令
  2. 缓存生成的节点
  3. 如果我们有另一个相同类型的对象,则简单地重用它并将其与新的Scope链接
  4. 但即使在浏览Angulars源代码之后,我也不知道在进入列表中的下一个对象之前我可以在哪里接收完成的结果。

    到目前为止,它解析了列表中每个条目的实际指令的模板,然后返回并完成子指令。

    希望我能够理解我想要实现的目标。

    提前致谢!

0 个答案:

没有答案