Javascript 角度管线重新加载后,visjs时间轴消失

Javascript 角度管线重新加载后,visjs时间轴消失,javascript,angularjs,vis.js,vis.js-timeline,Javascript,Angularjs,Vis.js,Vis.js Timeline,我已经将visjs时间线包装成一个角度指令。当我在外部控制器中调用$route.reload()时,时间线消失。页面重新加载完成后,该指令仍然具有对原始timeline对象的引用,并且dom元素似乎没有更改 有人知道什么会让它消失吗 我已经创建了一个plunkr,但我不知道如何在plunkr中重新加载路由,因为这会改变url 函数timelineViewer(){ var时间线; 返回{ 限制:'E', 替换:正确, 范围:{ 数据:'=' }, 控制器:功能($scope){ var ite

我已经将visjs时间线包装成一个角度指令。当我在外部控制器中调用
$route.reload()
时,时间线消失。页面重新加载完成后,该指令仍然具有对原始timeline对象的引用,并且dom元素似乎没有更改

有人知道什么会让它消失吗

我已经创建了一个plunkr,但我不知道如何在plunkr中重新加载路由,因为这会改变url

函数timelineViewer(){
var时间线;
返回{
限制:'E',
替换:正确,
范围:{
数据:'='
},
控制器:功能($scope){
var items=new vis.DataSet();
var container=document.getElementById('vis-timeline');
变量选项={
身高:100,
宽度:600,
zoomMin:1000*60*2,
zoomMax:1000*60*20
};
items.clear();
添加($scope.data);
时间线=新的可视时间线(容器、项目、选项);
log('Reloading directive…')
},
模板:“”
};
}

要重新加载路线,需要为控制器设置路线,请参阅您的plunker。 它似乎与您实现的指令配合得很好,然后我不确定原因,稍后我添加了一些更改,希望能够解决问题

解释“砰砰”的一声:

controller: function($scope, $element) {
  var items = new vis.DataSet();
  var container = $element[0];
angular的指令已经引用了自身的DOM元素(
$element
),因此可以安全地使用它,而不是通过
文档获取它。getElementById

$scope.$on('$destroy', function () {
  console.log('Destroying directive ...')
  timeline.destroy();
});
这几行确保在销毁指令时销毁时间线,该时间线使用方法
destroy()
清除受影响的DOM元素

$scope.$on('$destroy', function () {
  console.log('Destroying directive ...')
  timeline.destroy();
});