Javascript 在AngularJS中缓存复杂指令

Javascript 在AngularJS中缓存复杂指令,javascript,angularjs,cordova,Javascript,Angularjs,Cordova,我正在做一个主要针对移动设备的项目。 应用程序从服务器接收不同对象的列表,这些对象将一次呈现。 每个对象类型都有自己的指令,负责业务逻辑。但是,由于大多数对象都具有某些特性,我们创建了“子指令”,作为混音来保持其干燥 如果显示的对象不止一小部分(这是默认情况),Angular将花费相当长的时间解析和实例化这些指令+子指令 到目前为止,我们的绩效改进: 将ng repeat替换为自定义指令,该指令的工作方式类似于无限滚动 使用bindonce仅在确实需要绑定的地方限制绑定 使用模板预填充$temp

我正在做一个主要针对移动设备的项目。 应用程序从服务器接收不同对象的列表,这些对象将一次呈现。 每个对象类型都有自己的指令,负责业务逻辑。但是,由于大多数对象都具有某些特性,我们创建了“子指令”,作为混音来保持其干燥

如果显示的对象不止一小部分(这是默认情况),Angular将花费相当长的时间解析和实例化这些指令+子指令

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

将ng repeat替换为自定义指令,该指令的工作方式类似于无限滚动 使用bindonce仅在确实需要绑定的地方限制绑定 使用模板预填充$templateCache,而不是获取 通过templateUrl访问它们 但即使有了这些改进,性能仍然不可接受。尤其是导航到包含列表的状态时

我现在考虑的方法如下:

让Angular完全解析并创建一个具有 次级指令 缓存生成的节点 如果我们有另一个相同类型的对象,简单地重用它,并将它与一个新范围链接 但是,即使在阅读了Angulars的源代码之后,我也不知道在进入列表中的下一个对象之前,我可以在哪里获得完成的结果

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

希望我能让大家理解我的目标


提前谢谢

在我的定制ngRepeat-like指令中,我使用$cacheFactory缓存编译的元素:缓存不是问题,时间是关键。我希望在第一个指令完全布局后缓存生成的节点树,不管它是否链接,因此下一个对象可以重复使用它,而不是再次执行所有工作。