removeChild然后再次添加以前removedChild重新加载并清理它?

时间:2015-02-25 14:06:31

标签: javascript angularjs

我尝试做这样的事情

     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);

问题:可以先删除元素,然后将相同的元素放回一个函数中吗?或重新加载画布或重新启动,以便在其中创建图表时没有任何数据。我的应用程序是动态的,如果我不这样做,我的图表中的一些突出显示层将相互重叠。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

function removeAndAdd(el){
    var next = el.nextSibling;
    var parent = el.parentNode;
    parent.removeChild(el);
    //Do stuff to el
    parent.insertBefore(el, next);
}