【问题标题】:How to dynamically change jqplot renderer?如何动态更改 jqplot 渲染器?
【发布时间】:2011-11-04 23:45:10
【问题描述】:

基本上,我希望用户能够通过单击下拉菜单来更改图形的类型:BarRenderer、PieRenderer 等。数据是相同的。我知道我可以在同一个元素上再次调用 $.jqplot() ,但是我必须再次传递所有设置。而且我的页面有可变数量的图表,这使得该选项成为一个非常糟糕的选择。

我找到了一个关于这个的链接:http://groups.google.com/group/jqplot-users/browse_thread/thread/efe6511cd9496f16/5c625baf78d3b0ae,但我似乎仍然需要再次调用 $.jqplot()。

有没有更好的方法来做到这一点?还有一个小问题:只是我,还是 jqplot 上的文档不好?我必须查看多个地方才能找到我想要的选项(有时,该选项没有记录,或者我无法以某种方式找到它)。 jqplot怎么学?

【问题讨论】:

标签: jquery jqplot


【解决方案1】:

我认为文档还可以,但是您会发现其中隐藏的功能或未记录的怪癖。 IIRC(已经有一段时间了)你将不得不再次调用 $.jqplot() 但你首先需要 .empty() 你的目标,否则你会得到额外/混乱的画布。

您真正需要做的是保存数据并允许以后调用它:

//This isn't real jqplot syntax but it should give you a good idea of what I'm explaining

var charts = [{name:"chart1",renderer:"pie",data:[[1,2],[2,3]]}]
$('#graph').jqplot(charts[0]);

//later
charts[0].renderer = "bar";
$('#graph').empty().jqplot(charts[0]);

【讨论】:

  • 确保在调用 empty() 之前调用图表上的 destroy() ,否则会出现内存泄漏。将第一次调用 jqplot 返回的图表保存到一个变量中,然后在“稍后”部分,调用 chart.destroy();在重建情节之前。
猜你喜欢
  • 2012-12-31
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多