【问题标题】:dc.js reselect a chart already rendereddc.js 重新选择已呈现的图表
【发布时间】:2017-04-13 03:21:07
【问题描述】:

我正在尝试手动重新设置已呈现的饼图的宽度。该图表是在角度工厂和指令中创建和呈现的,我想从控制器中获取此图表。有没有类似于

的select方法
var chart = dc.pieChart("#pieChart");

我可以用来做这种事情

chart
   .width(500)

dc.redrawAll()

如何重新选择已经呈现的图表以执行上述操作?

所以我只是通过范围上的自定义对象将图表对象传回只是为了尝试获取它并且它可以工作。

// inside something else
$scope.thisObject.charts.forEach(function(d){
    if (d.name === element.id) {
         // found the right object
         d.chart
            .width(500)
            .height(500)

         dc.chart.render();
         // this works for bars, rows and line charts, but not pies?
    }
})

【问题讨论】:

  • 我认为您必须以某种方式抓住图表对象。我不知道角度是如何工作的,但如果它会对你隐藏它会很烦人。您也可以在chart registry 中四处寻找,但我不确定您将如何比较图表以找到合适的。
  • 嗯...谢谢戈登。我会看看是否可以通过自定义对象将图表对象传回并以这种方式进行处理。
  • 是的,不继续,它会改变 svg 的尺寸(高度、宽度),但即使使用 renderAll 和 redrawAll 它也不会增加 g/path 等
  • 它适用于条形图、行和折线,但不适用于饼图?有什么想法吗?
  • 天啊,我不想看到你使用renderAll,它从绝对零开始。它应该与重绘一起使用。 This example demonstrates resizing a pie chart and redrawing it.(调整浏览器窗口大小以尝试它。)是否可以像定义半径一样简单,而它应该只根据宽度/高度计算?

标签: javascript angularjs d3.js dc.js


【解决方案1】:

更改图表宽度后尝试dc.redrawAll

dc.redrawAll();

希望它有效,否则你可以选择另一个选项dc.renderAll()

【讨论】:

  • 谢谢,但这不是我的问题。我想知道如何“选择”已经呈现的图表......以便我可以手动“重新设置”属性(宽度等)。
猜你喜欢
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
相关资源
最近更新 更多