我的代码中出现此错误
Error: Tried to register widget with id==legend1 but that id is already registered
图例的代码是:
<div id="legend1"></div>
var stackedAreaLegend = new dojox.charting.widget.SelectableLegend({
chart: chart1
}, "legend1");
stackedAreaLegend.refresh();
我怎么能解决这个错误?
答案 0 :(得分:8)
尝试在创建新内容之前销毁小部件:
var stackedAreaLegend = dijit.byId('legend1');
if (stackedAreaLegend) {
stackedAreaLegend.destroyRecursive(true);
}
stackedAreaLegend = new dojox.charting.widget.SelectableLegend({
chart: chart1
}, "legend1");
stackedAreaLegend.refresh();
答案 1 :(得分:1)
有点奇怪但是看起来它看起来需要在onLoad上发生,而不是在DOM完全加载时。请在HTML的主题部分中尝试此操作:
dojo.addOnLoad(function(){
var stackedAreaLegend = dojox.charting.widget.SelectableLegend({chart: chart},"legend1");
stackedAreaLegend.refresh();
});
来源:http://bugs.dojotoolkit.org/browser/dojox/trunk/charting/tests/test_selectableLegend.html?rev=23507
答案 2 :(得分:1)
我也有同样的问题,这对我有帮助
var gridRegister = registry.byId('grid');
if (gridRegister) {
gridRegister.destroyRecursive(true);
}
答案 3 :(得分:0)
你也可以试试这个: -
Aftter addSeries你可以写: -
var legend = new dojox.charting.widget.Legend({ chart: chart, horizontal: false }, chartID);
在UpdatinSeries()
之后更新,你可以写:
dijit.byId(chartID + "_Legend").refresh();
使用数字时,您必须包括:
dojo.require("dijit.registry");
希望它有所帮助!
答案 4 :(得分:0)
要摆脱它,你应该使用parseOnLoad:true参数在页面标题中配置dojo loader:
<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js" data-dojo-config="isDebug: false, async: true, parseOnLoad: true"></script>