4

コードにこのエラーがあります

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(); 

このエラーを解決するにはどうすればよいですか?

4

5 に答える 5

8

新しいものを作成する前に、ウィジェットを破棄してみてください。

var stackedAreaLegend = dijit.byId('legend1');
if (stackedAreaLegend) {
   stackedAreaLegend.destroyRecursive(true);
}

stackedAreaLegend = new dojox.charting.widget.SelectableLegend({
    chart: chart1
    }, "legend1");   

stackedAreaLegend.refresh(); 
于 2011-05-11T15:23:36.773 に答える
1

少し奇妙ですが、例を見ると、DOMが完全にロードされるときではなく、onLoadで発生する必要があるように見えます。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

于 2011-05-11T13:55:35.580 に答える
1

私も同じ問題を抱えていました、これは私を助けました

var gridRegister = registry.byId('grid'); if (gridRegister) { gridRegister.destroyRecursive(true); }

于 2013-03-23T09:17:01.663 に答える
0

これも試すことができます:-

あなたが書くことができる後のaddSeries:-

var legend = new dojox.charting.widget.Legend({ chart: chart, horizontal: false }, chartID);

UpdatinSeries()そして、あなたが書くことができた後にそれを更新している間:

dijit.byId(chartID + "_Legend").refresh();

数字を使用するには、次のものを含める必要があります。

dojo.require("dijit.registry");

それが役に立てば幸い!

于 2013-08-02T13:34:05.167 に答える
0

これを取り除くには、ページのヘッダーでparseOnLoadを使用してdojoローダーを構成する必要があります。trueパラメーター:

<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js" data-dojo-config="isDebug: false, async: true, parseOnLoad: true"></script>
于 2014-09-13T08:16:41.740 に答える