有没有办法改进动态创建的html编译?

时间:2016-03-03 19:58:13

标签: angularjs

所以我有一种情况,我在使用jquery创建html。我没有选择,因为我被迫使用旧的jquery插件并将创建的html集成在angular中,唯一的方法就是$ compile。基本上流程是

var createbody = function(htmlcontents,scope){
   $compile(htmlcontents)(scope);
}

公司内部jquery插件是一种用于表格的无限滚动,它根据滚动位置销毁并重新创建一大块tr。因此每次滚动时,如果插件需要销毁并添加tr,则会调用createbody。

问题在于,只要因为编译而导致销毁并创建部分,滚动就会变得非常滞后。此时指令不是一种选择。

问题:有没有办法缓存以前编译的块,并在以后插件决定它需要再次使用该块时使用它。感谢

1 个答案:

答案 0 :(得分:0)

您可以重复使用已编译的模板:

var compiledTemplate = $compile(html);
compiledTemplate($scope1);
compiledTemplate($scope2);
compiledTemplate($scope3);

您还可以看到ngRepeat如何重用元素:https://github.com/angular/angular.js/blob/master/src/ng/directive/ngRepeat.js#L469,但它有点复杂。