我正在尝试创建一个表格,其中一行在点击时展开,并且在新展开的行内绘制了两个D3图表。
我的展开行的逻辑: -
<tbody>
<tr ng-repeat-start="item in nodeSummary">
<td>
<button ng-if="item.expanded" ng-click="tableRowExpand($index,false)">-</button>
<button ng-if="!item.expanded" ng-click="tableRowExpand($index,true)">+</button>
</td>
<td>{{item.a}}</td>
<td>{{item.b}}</td>
<td>{{item.c}}</td>
</tr>
<tr ng-if="item.expanded" ng-repeat-end>
<td colspan="4" style="height:100px;width:100%;">
<div id="expanded-tablerow-container" style="height:100%;width:100%;overflow:auto;" >
<div id="expanded-tablerow-circleProgress" style="height:100%;width:20%;float:left;">Here</div>
<div id="expanded-tablerow-barchart" style="height:100%;width:80%;float:left;">Here</div>
</div>
</td>
</tr>
</tbody>
因此,使用按钮的ng-repeat-start/end
和onClick
,特定行会展开/缩小。
tableRowExpand函数: -
$scope.tableRowExpand = function(index, value){
$scope.nodeSummary[index].expanded = value;
if (value){
drawCircularProgressBar(d3.select("#expanded-tablerow-circleProgress"),0.8);
drawHorizontalBar("#expanded-tablerow-barchart",data);
}
};
所以在检查value
时true
我正在调用绘制d3图表和条形图的方法。但他们并没有画画。
我的问题: -
希望我能够清楚自己。请帮我解决这个问题。
感谢。
答案 0 :(得分:0)
我终于能够解决它了。让我们去吧。
问题1)
是的我是对的:)问题是该文件没有全部加载,我解决了添加一个简单的检查代码,
angular.element(document).ready(function(){
//calling the d3 draw code here
});
问题2)
我不知道这是否是最有效的方式,如果有人想输入,请这样做,但我这样做了。
var newCircleProgressId = 'expanded-tablerow-circleProgress' + index;
var newHoizontalBarId = 'expanded-tablerow-barchart' + index;
document.getElementById("expanded-tablerow-circleProgress").setAttribute('id',newCircleProgressId);
document.getElementById("expanded-tablerow-barchart").setAttribute('id', newHoizontalBarId);
即。动态更改 tableRowExpand 函数中div的ID,并将此新ID与行唯一(使用索引提取)一起传递以绘制d3函数。