Angularjs 将指令作为VIS项的内容传递

Angularjs 将指令作为VIS项的内容传递,angularjs,angularjs-directive,vis.js,vis.js-timeline,Angularjs,Angularjs Directive,Vis.js,Vis.js Timeline,我一直在使用visjs.org/docs/timeline/显示数据的时间轴视图。我有一个指令,它从API获取数据,并使用$compile方法创建模板 <vis-timeline timeline-data="apiData"></vis-timeline> 我将编译好的模板作为visDataSet的内容推送到时间线上。尽管这种方法效果很好,但构建时间线大约需要10秒。对时间线的任何编辑都需要10秒才能反映出来 如果我添加一个普通模板而不是它,它确实会很快被添加。如何提

我一直在使用visjs.org/docs/timeline/显示数据的时间轴视图。我有一个指令,它从API获取数据,并使用
$compile
方法创建模板

<vis-timeline timeline-data="apiData"></vis-timeline>
我将编译好的模板作为vis
DataSet
的内容推送到时间线上。尽管这种方法效果很好,但构建时间线大约需要10秒。对时间线的任何编辑都需要10秒才能反映出来


如果我添加一个普通模板而不是它,它确实会很快被添加。如何提高编译模板的速度

是否始终都是相同的指令
时间线项
和相同的模板字符串
'
?如果您能设置来说明您所面临的问题,那就太好了。@StanislavKvitash是的,它是相同的指令,但范围会有所不同。上面提到的只是一个详细说明问题的示例。根据您对
模板
变量的进一步操作,您可以缓存
$compile
的部分结果,如
var compiledTemplate=$compile(“”)
out链接函数,然后像
clonedElement
是传递给编译器的原始元素的克隆一样使用它。但是如果您能提供
mcve
来更好地理解这个问题,那就太好了。@StanislavKvitash上面提供的mcve应该足够了,不是吗?
link: function(scope,element,attr){
   if(scope.roster.timelineData){

     angular.forEach(scope.roster.timelineData, function(){

     //Create a scope for the directive used for vis DataSet
     var templateScope = scope.$new(true);//create an isolated scope

     templateScope.name = 'templateData';
     //this can be different for each iteration

     var template = $compile('<timeline-item template-data="name"></timeline-item>')(templateScope)[0];

     });
   }
 }