我尝试做这样的事情
var refresh = function(){
var elem = document.getElementById(scope.id);
elem.parentNode.removeChild(elem);
console.log('Canvas Destroyed');
//Here I would like to add removedChild again so i am sure that is clean//
};
scope.$watch('data', function (newVal, oldVal) {
if (newVal) {
refresh(); //I Use Function Here So i am sure that canvas are empty
var newChart = document.getElementById(scope.id).getContext("2d");
console.log('Charts0');
var PieChart = new Chart(newChart).Pie(scope.data, scope.options);
console.log('Charts1');
}
}, true);
问题:可以先删除元素,然后将相同的元素放回一个函数中吗?或重新加载画布或重新启动,以便在其中创建图表时没有任何数据。我的应用程序是动态的,如果我不这样做,我的图表中的一些突出显示层将相互重叠。
答案 0 :(得分:0)
这应该可以解决问题:
function removeAndAdd(el){
var next = el.nextSibling;
var parent = el.parentNode;
parent.removeChild(el);
//Do stuff to el
parent.insertBefore(el, next);
}