javascript – Angular.js缓存$编译模板/渲染ng-repeat内指令的性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Angular.js缓存$编译模板/渲染ng-repeat内指令的性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1181字,纯文字阅读大概需要2分钟。
内容图文
我有一个渲染表格单元格的指令(请参阅我在这里编译它的方式,基本上在链接fn Angular.js directive template using variable from parent/inherited scope中使用$compile),现在这用于两个ng-repeats,一个用于行,一个用于列,所以它是基本上
<ng-repeat row in rows>
<ng-repeat column in columns>
<my-cell-directive />
</ng-repeat>
</ng-repeat>
它有50行和8列,对(渲染)性能有很大的影响(无论如何都非常明显).
所以我一直在寻找一种方法来改进它.首先,我试图摆脱列的内部重复,创建一个my-cols指令,它在内部迭代列,找到它们的模板,创建一个字符串(里面有8列),然后编译它.其中将编译量从400降低到50.但它在渲染方面并没有明显改善(确实如此,但只有约15%).
现在我的另一个想法是将它减少到只有一个编译方式,基本上在ng-repeat的第一次迭代中编译它,然后保存(缓存)编译结果,这样指令就会使用它而不是一遍又一遍地编译它,只需用当前迭代中的绑定值替换绑定值.
有可能以某种方式吗?或者还有其他方法可以提高渲染速度吗?
解决方法:
如果可能的话,你应该避免在链接函数中使用$compile.你可以缓存$compile的parital结果.
使用编译对象cloneAttachFn的第二个参数
directive('lol', function($compile){
var compiled = $compile(template);
return function(scope, element, attr){
compiled(scope, function(clonedElement, scope){
element.append(clonedElement);
};
}
})
内容总结
以上是互联网集市为您收集整理的javascript – Angular.js缓存$编译模板/渲染ng-repeat内指令的性能全部内容,希望文章能够帮你解决javascript – Angular.js缓存$编译模板/渲染ng-repeat内指令的性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。