gpt4 book ai didi

javascript - xPages 刷新中的 Morris.JS

转载 作者:行者123 更新时间:2023-11-29 21:54:57 26 4
gpt4 key购买 nike

我们使用 BootCards。我有一个用于 Morris.js 图形的自定义控件。我找到了一种从重复控件的选定文档中获取数据的方法。

我的问题是刷新另一个文档的图表。当我将自定义属性“ajaxload”设置为“否”时,页面会刷新并显示我的图表。并非重复控件中的所有条目都更改了图表。选中的项目跳转到第一项。

我可以在哪里放置 morris.js 的重绘或设置数据功能,以便可以在不刷新的情况下使用 AJAX 功能。

谢谢!

<script
src="unp/raphael.min.js"
type="text/javascript">
</script>
<script
src="unp/morris.min.js"
type="text/javascript">
</script>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
var chartDataCalc =
#{javascript:var chartData = [];
var val = docview1.getItemValueArray(compositeData.barvalue);
var name = docview1.getItemValueArray(compositeData.barname);
for (var i=0; i<name.length; i++) {
chartData.push( {label : name[i], value : val[i]});
}
return toJson(chartData)
};

var chartBar =
Morris.Bar({
element: #{javascript:compositeData.divid},
data: '',
xkey: 'label',
ykeys: ['value'],
labels: ['#{javascript:compositeData.barlabel}'],
resize: true,
redraw: true
});
chartBar.setData(chartDataCalc, 'True');
]]>
</xp:this.value>
</xp:scriptBlock>

最佳答案

如果我没理解错的话,您正在执行部分刷新以更新重复控件,然后想在刷新发生后重新绘制。 XPages 有两种方法可以做到这一点:

  1. 如果您在部分刷新事件中运行 SSJS/Java 代码,可以使用 view.postScript("") 编写 CSJS,以便在处理完 SSJS 脚本后运行。该参数是一个字符串,可以解析为 CSJS,例如“警报('Hello World!')”。
  2. 如果您在大纲或源 Pane 中选择事件处理程序(后者是我的偏好),您将在“属性” Pane 中看到该事件处理程序具有可以运行 CSJS 的 onComplete 属性。

关于javascript - xPages 刷新中的 Morris.JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26904773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com