我可以将javascript对象传递回atk4页面吗?
从ATK4页面,我可以使用如下javascript帮助文件调用jqplot我可以将javascript对象传递回atk4页面吗?,javascript,arrays,jqplot,atk4,Javascript,Arrays,Jqplot,Atk4,从ATK4页面,我可以使用如下javascript帮助文件调用jqplot class jqplot extends View { function render() { $plot=$this->js(true)->univ()->jqplot($this->series, $this->opts); parent::render(); return $this; } } 在页面上 $chart = $p->add
class jqplot extends View {
function render()
{
$plot=$this->js(true)->univ()->jqplot($this->series, $this->opts);
parent::render();
return $this;
}
}
在页面上
$chart = $p->add('jqplot', null, 'chart1');
$chart->setSeries(array(10,20,15));
像这样定义一个jqplot.php
class jqplot extends View {
function render()
{
$plot=$this->js(true)->univ()->jqplot($this->series, $this->opts);
parent::render();
return $this;
}
}
在js帮助文件中,将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调用重新加载它,它可以正常工作,但是如果我有几个图表彼此相邻,只有第一个图表是可以的,如果我调用reload,它旁边的一个图表将完全消失
我真正想做的是调用图表上的jqplot replot函数,并从页面向其传递新数据,但我如何才能做到这一点?jshelper中的$plot对象包含一个javascript对象,我需要这个对象来调用它的replot
我在想,当我第一次在javascript关联数组中创建对象,然后调用replot,查找id,如果找到,调用对象上的replot时,也许我可以存储该对象,但不确定这段代码是什么样子,或者我是否有正确的方法,因此任何帮助都值得赞赏
提前感谢您的帮助。要做到这一点可能相当困难。首先,您需要正确处理jqPlot的销毁。您需要一个适当的jQueryUI小部件,能够通过反构造函数恢复所有内容。然后你就可以开始工作了
就敏捷工具包而言,它使用JavaScript销毁包含jqPlot的元素,重新加载HTML并重新执行JavaScript 但是在.js帮助程序中是否可以将javascript对象存储为会话变量。如果我把它放在一个关联数组中,键是divid,那么当调用replot时,js助手可以检索原始对象并修改它吗?因此,并不是真的将其返回到atk4,而是存储javascript对象,而不是使用ajaxec重新加载。您是否希望在atk4会话中保存javascript小部件的状态?我想你能做到。为什么你需要刷新页面呢?也许不需要调用reload,只需调用replot即可。你能解释一下你想要实现的目标吗?目前我正在重新加载包含图表的元素,但是当有两个图表并排时,这会导致其中一个在重新绘制之前完全消失。我真的很想调用replot,但是使用jqplot,replot函数需要在第一次概念上创建图表时使用的javascript对象,比如series=1,2,3;chart=jqplot(divname、series、options);新闻系列=4,5,6;图.replot(新闻系列);。问题是,当我创建图表时,我认为我需要将图表保存在某个地方,而这是一个客户端对象。