Oracle JET图表JS函数仅强制刷新页面时生效的问题求助
Oracle JET图表JS函数仅强制刷新页面时生效的问题求助
大家好,我遇到一个Oracle JET图表相关的棘手问题,折腾好一阵都没捋清楚原因,来请教下各位前辈。
我目前在使用Oracle JET的图表组件,需求是把图表的Y轴刻度标签转换成百分比格式。我把逻辑写在了require的回调函数里,本来以为这样能确保所有依赖资源加载完成后再执行代码,但实际情况却不对劲:只有硬刷新页面的时候这段代码能正常工作,普通按F5刷新的话就会直接报错,提示oj.IntlNumberConverter is not a constructor。
我的代码是这样的:
require(["ojs/ojcore", "ojs/ojconverter", "ojs/ojchart", "ojs/ojpictochart"], function (oj) { $('.dyn-chart').each(function () { var chart = $(this); c = new oj.IntlNumberConverter({ style : "percent" }); chart.ojChart(chart.data("chartJson")); chart.ojChart( "option", "yAxis.tickLabel.converter", c ); }); });
我试过精简依赖的资源模块,但最后发现这些都是功能必须的,少一个都没法正常运行。后来我给代码加了个100ms的setTimeout延迟执行,就一切正常了,但总觉得这种靠延迟“凑时间”的办法不太靠谱,肯定有更合理的解决思路。
有没有大佬能帮我分析下,为什么require的回调里还会出现模块未就绪的情况?或者有没有什么正确的姿势能确保代码在所有依赖完全就绪后再执行?
备注:内容来源于stack exchange,提问作者theduckspants
相关产品推荐
相关产品推荐

