angular.js - angularjs directive + D3, after the scope data is updated, the new image will be directly overlaid on the old image after the visualization is regenerated.
淡淡烟草味
淡淡烟草味 2017-05-15 16:50:46
0
1
638

After adding transclude, the content in the template should be cleared, but the original picture is still there every time after updating the data. Is there something wrong with it? Is it related?

directive

myApp.directive('sankeyChart', function($window){
    return{
        restrict:'EA',
        transclude: true, //加了transclue
        template:"<svg width='1200' height='600'></svg>",
        scope:{chartData:'=chartData'},
        link: function(scope, elem, attrs){
            scope.$watch('chartData', function(nv){
                var dataToPlot=nv;
                var d3 = $window.d3;
                、、、、下面都是d3的代码、、、、、、、

Call directive

<p sankey-chart chart-data="sankeyData" ng-if="sankeyData" class="myCharts"></p>

As shown below:

淡淡烟草味
淡淡烟草味

reply all(1)
小葫芦

Erase, I found the problem. Transclude cannot erase the contents of the svg generated by d3. I manually add a code to clear the contents of the svg before writing the d3 code - it's done.

svg.selectAll('*').remove();
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template