首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xPages刷新中的Morris.JS

xPages刷新中的Morris.JS
EN

Stack Overflow用户
提问于 2014-11-13 16:55:42
回答 1查看 312关注 0票数 2

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

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

我可以将morris.js的redraw或setdata函数放在哪里,这样就可以在不刷新的情况下使用AJAX函数。

谢谢!

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2014-11-13 17:13:22

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

  1. 如果您在部分刷新事件中运行SSJS / Java代码,则可以使用view.postScript("")来编写在SSJS脚本被处理后运行的CSJS。该参数是可以解析为CSJS的字符串,例如“eventHandler (‘Hello World!’)”。
  2. 如果您在大纲或源窗格中选择eventHandler (后者是我的首选),您将在属性窗格上看到eventHandler具有onComplete属性,该属性可以运行CSJS。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26904773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档