从ATK4页面,我可以调用jqplot使用页面我可以将javascript对象传回给atk4页面吗?
$chart = $p->add('jqplot', null, 'chart1');
$chart->setSeries(array(10,20,15));
在这样
一个JavaScript帮手文件中定义这样
class jqplot extends View {
function render()
{
$plot=$this->js(true)->univ()->jqplot($this->series, $this->opts);
parent::render();
return $this;
}
}
,并在JS一个jqplot.php助手文件,将php调用链接到javascript
$.each({
jqplot: function(series, opts){
console.log('jqplot series',series);
console.log('jqplot options',opts);
$plot=$.jqplot(this.jquery.attr("id"), series, opts);
return $plot;
}
}
如果我在页面上有一个图表并用ajaxec调用重新加载它,它可以正常工作,但如果我有多个图表彼此相邻,则只有第一个图标可以,并且旁边的图标完全消失如果我打电话重新加载。
我真正想要做的是调用图表上的jqplot replot函数,并从页面传递新的数据,但我该如何做到这一点? jshelper中的$ plot对象包含一个JavaScript对象,我需要这个对象来调用它的replot。
我想也许我可以存储对象,当第一次创建一个JavaScript关联数组,然后当我调用replot,查找id,如果找到,调用replot对象,但不知道这段代码是什么样子或是否我有正确的方法,所以任何帮助表示赞赏。
在此先感谢您的帮助。
但是,在.js助手中是否可以将JavaScript对象存储为会话变量。如果我把它放在关联数组中的关键字是div id,那么当调用replot时,js helper可以检索原始对象并对其进行修改?所以不是真的回到atk4,只是存储JavaScript对象,而不是使用ajaxec来重新加载。 –
您是否希望在ATK4会话中保存JavaScript小部件的状态?我想你可以做到这一点。为什么你需要刷新页面呢?可能不是调用reload,而是调用replot。你能解释一般你想达到什么吗? – romaninsh
目前我正在重新载入包含图表的元素,但是当并排有两个图表时,这会导致其中一个在重绘之前完全消失。我真的想调用replot,但使用jqplot,replot函数需要在图表第一次创建时使用的JavaScript对象,概念上类似于series = 1,2,3; chart = jqplot(divname,series,options); newseries = 4,5,6; chart.replot(newseries);.问题是我认为当我创建图表并且这是客户端对象时,我需要将图表保存在某处。 –