ошибка: идентификатор уже зарегистрирован - PullRequest
4 голосов
/ 11 мая 2011

у меня есть эта ошибка в моем коде

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

как я могу решить эту ошибку?

Ответы [ 5 ]

8 голосов
/ 11 мая 2011

Попробуйте уничтожить виджет перед созданием нового:

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

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

stackedAreaLegend.refresh(); 
1 голос
/ 23 марта 2013

У меня тоже такая же проблема, мне это помогло

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

1 голос
/ 11 мая 2011

Несколько странно, но из примера видно, что это должно происходить при 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

0 голосов
/ 13 сентября 2014

Чтобы избавиться от него, вы должны настроить загрузчик dojo в заголовке страницы с параметром parseOnLoad: true:

<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js" data-dojo-config="isDebug: false, async: true, parseOnLoad: true"></script>
0 голосов
/ 02 августа 2013

Вы также можете попробовать это: -

Aftter addSeries вы можете написать: -

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

И при обновлении после UpdatinSeries() вы можете написать:

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

Для использования цифры необходимо указать:

dojo.require("dijit.registry");

Надеюсь, это поможет!

...