Angularjs D3更新图例未删除旧数据

Angularjs D3更新图例未删除旧数据,angularjs,d3.js,Angularjs,D3.js,我是一个javascript新手,我按照一个脚本创建了一个饼图。我想它更新与选择列表中的变化。当饼图工作时,图例列表只会增长 我尝试了exit.remove并选择了allg.remove,在调试中我看到g元素已经被删除,但是变量图例在每次更新中不断增长,而不是删除旧数据。有人能理解为什么代码与饼一起工作,而图例不起作用吗 非常感谢 这是我的密码 var app=角度。模数app,[]; //控制器获取平均json数据并按主机进行重组,生成执行 app.controllerpieCtrl,函数$

我是一个javascript新手,我按照一个脚本创建了一个饼图。我想它更新与选择列表中的变化。当饼图工作时,图例列表只会增长

我尝试了exit.remove并选择了allg.remove,在调试中我看到g元素已经被删除,但是变量图例在每次更新中不断增长,而不是删除旧数据。有人能理解为什么代码与饼一起工作,而图例不起作用吗

非常感谢

这是我的密码

var app=角度。模数app,[]; //控制器获取平均json数据并按主机进行重组,生成执行 app.controllerpieCtrl,函数$scope,$http{ $http.getaverage.json.successfunctiondata{ //执行-键:主机名,值:[listExecutions] var执行={}; data.foreachd函数{ 执行中的if!d.hostName{ 执行[d.hostName]={ 主机名:d.hostName, 列表执行:[] } } 执行[d.hostName].listexcutions.pushd; }; //列出[[host1]、[host2]]的主机名 $scope.ListHostnames=[]; Object.keysexecutions.forEachfunctionhostName{ $scope.ListHostnames.pushexecutions[hostName]; }; //默认值,绑定到 $scope.selectedHostname=$scope.ListHostnames[2]; }.errorfunctionerr{ 犯错误; }; }; app.directivepie,函数{ 函数链接范围、元素、属性{ var wpie=300; var-hpie=300; var outerRadius=wpie/2; var innerRadius=外表面*0.5; var color=d3.scale.category10; 变量legendRectSize=18; var legendSpacing=4; 范围。$watch'data',更新; var pie=d3.layout.pie .价值函数{ 返回d.executionNum; } .sortnull;//防止对值进行排序; var arc=d3.svg.arc .outerradius outerradius .内放射状; //svg必须在外部更新,否则将创建多个图表,而不是更新一个图表 var svg=d3.selectchart.appendsvg .attrwidth,wpie*2 .高度,hpie*1.5 .附录 .attransform,translate+wpie/2+,+hpie/2+; //工具提示 变量工具提示=d3。选择“饼图” .附加'div' .attr'class','tooltip'; 工具提示。附加'div' .attr'class','date'; 工具提示。附加'div' .attr'class','num'; 功能更新{ //清除剩下的东西 选择所有“路径”。删除; //输入数据 if!scope.$parent.selectedHostname{return} var data=scope.$parent.selectedHostname.listExecutions; //绑定数据 var arcs=svg.selectAllpath .数据和数据; //附加形状的路径 arcs.enter.appendpath .attrd,arc .attrfill,函数d{ 返回d.data.day; } .eachFunction{this.\u current=d;};//动画 //鼠标悬停工具提示以显示内容 弧。在“鼠标悬停”上,功能为{ var num=d.enabled?d.data.executionNum:0; 工具提示。选择'.date'.html'日期:'+d.data.day+'/'+d.data.month; 工具提示。选择'.num'.html'执行次数:'+num; 工具提示。样式为“显示”、“块”; }; 弧。在“mouseout”上,函数{ 工具提示。样式为“显示”、“无”; }; //添加标签 arcs.enter.appendtext .attr转换,函数{ 返回平移+圆弧.centroidd+; } .attrdy,.35em .styletext定位符,中间 .textfunctiond{ 返回d.data.executionNum; } .填充,黑色; svg.selectAll.legend.remove; svg.selectAllg.remove; svg.selectAllg.legend.remove; var legend=svg.selectAll'.legend' .datacolor.domain; 图例.exit.remove; legend.enter .附加“g” .attr'class','legend' .attr'transform',函数d,i{ 变量高度=legendRectSize+legendSpacing; var offset=高度*color.domain.length/2; var horz=10*legendRectSize; var vert=i*高度-偏移量; 返回“translate”+horz+,“+vert+”; }; 图例。附加“圆” .attr'cx',legendRectSize .attr'cy',legendRectSize .attr'r',8 .样式“填充”,颜色 .样式“笔划”,颜色 .attr“类”、“图例”; 图例。附加“文本” .attr'x',legendRectSize+4*legendSpacing .attr'y',legendRectSize+4 .textfunctiond{return d;} .attr“类”、“图例”; 图例.exit.remove; } } 返回{ 链接:链接, 限制:'E', 作用域:{data:'='} }; } 动态饼图 动态饼图