2011-05-11 17 views
5

tengo este error en mi códigode error: ID ya está registrado

Error: Tried to register widget with id==legend1 but that id is already registered 

el código de la leyenda es:

<div id="legend1"></div> 

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

    stackedAreaLegend.refresh(); 

cómo puedo solucionar este error?

Respuesta

7

tratar de destruir control antes de que la creación de nuevos:

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

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

stackedAreaLegend.refresh(); 
1

Algo extraño, pero parece que al ver el ejemplo, debe ocurrir en onLoad en lugar de cuando el DOM carga por completo. Pruebe esto en la sección de cabecera de su HTML:

dojo.addOnLoad(function(){ 
    var stackedAreaLegend = dojox.charting.widget.SelectableLegend({chart: chart},"legend1"); 
    stackedAreaLegend.refresh(); 
}); 

Fuente: http://bugs.dojotoolkit.org/browser/dojox/trunk/charting/tests/test_selectableLegend.html?rev=23507

+0

gracias. Tengo dojo.addOnLoad (makeObjects); donde makeObjects hizo el gráfico y la actualización. mi problema es que lo único que realmente se actualiza es la información sobre herramientas. La tabla actualizada es dibujar abajo del div correcto y la leyenda desaparece –

1

yo también tiene el mismo problema, esto me ayudó

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

0

Puede intentar esto también: -

Aftter addSeries puede escribir: -

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

Y mientras que la actualización que después UpdatinSeries() puede escribir:

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

Para poder utilizar dígitos que tiene que incluir:

dojo.require("dijit.registry"); 

¡Espero eso ayude!

0

para deshacerse de ella debe configurar cargador dojo en la cabecera de la página con parseOnLoad: cierto parámetro:

<script src="//yandex.st/dojo/1.9.1/dojo/dojo.js" data-dojo-config="isDebug: false, async: true, parseOnLoad: true"></script> 
Cuestiones relacionadas