Javascript 角度管线重新加载后,visjs时间轴消失
我已经将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
$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();
});