所以我有一种情况,我在使用jquery创建html。我没有选择,因为我被迫使用旧的jquery插件并将创建的html集成在angular中,唯一的方法就是$ compile。基本上流程是
var createbody = function(htmlcontents,scope){
$compile(htmlcontents)(scope);
}
公司内部jquery插件是一种用于表格的无限滚动,它根据滚动位置销毁并重新创建一大块tr。因此每次滚动时,如果插件需要销毁并添加tr,则会调用createbody。
问题在于,只要因为编译而导致销毁并创建部分,滚动就会变得非常滞后。此时指令不是一种选择。
问题:有没有办法缓存以前编译的块,并在以后插件决定它需要再次使用该块时使用它。感谢
答案 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,但它有点复杂。