2011-04-11 62 views
2

我知道Protovis并不是真正用于这种方式,但是有没有一种解决方法来销毁当前在pv.Paneladd()'ing和re- render()'中的内容?Protovis强制重新呈现

我正在研究构建为静态的可视化,并尝试将其迁移到通过WebSockets定期更新。

回答

5

是的,您可以让Protovis在不破坏面板的情况下重新渲染。您可以更新面板使用的数据,并再次调用渲染。例如:

var data = [1, 2, 3]; 

var panel = new pv.Panel() 
    .data(data) 
    .add(pv.Bar) 
    ... 

panel.render(); // initial render 

data = [4, 5, 6]; 
panel.data(data); // update the data 
panel.render(); // re-render 
+0

谢谢!我最终通过使面板的所有孩子不可见并重新添加新的孩子来解决问题,因为事实上,当上述解决方案起作用时,它不会扩展到像基于数据边界的变化尺度之类的事情。如果您正在绘制1-10的数据并且数据的下一个版本是1-50,那么您无法通过更新数据来重新调整图形,对吗? – nicolaskruchten 2011-04-28 04:37:06

+0

Nicolas,你是对的,当你调整你的数据时,如果你想根据数据改变他们的域或范围,你需要重建你的比例对象。 – bsterne 2011-04-28 13:33:19