J'ai une application ESRI ArcGis Javascript basée sur ESI, dans laquelle le measurement widget doit être ajouté. Lorsque je tente de démarrer ce widget, je reçois les erreurs suivantes:L'ajout d'un widget esri entraîne une erreur d'ID en double
- dojo/analyseur :: parse() Erreur Erreur: Essayé d'enregistrer id == widget avec dijit_layout_ContentPane_0 mais id est déjà enregistré
- erreur d'analyse dans _ContentSetter # Non défini erreur: Tentative d'enregistrement widget avec id == dijit_layout_ContentPane_0 mais id est déjà enregistré
- erreur non définie en cours d'exécution du code onLoad personnalisé: Ce report a déjà été résolu
Html:
<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="title:'Measurement'">
<div id="Measurement"></div>
</div>
JS:
require(["esri/IdentityManager",
"dojo/parser",
"user/MeasurementLoader"
], function(parser, MeasurementLoader) {
parser.parse();
//bootstrap other stuff
MeasurementLoader.init({
map: map
});
});
MeasurementLoader:
define([
"...",
],
function(dom, ...) {
esriConfig.defaults.geometryService = new GeometryService("http://ourarcgisserverurl");
var
sls = new SimpleLineSymbol("solid", new Color([195, 176, 23]), 2),
sfs = new SimpleFillSymbol("solid", sls, null),
init = function(options) {
var widget = new Measurement({
map: options.map,
fillSymbol: sfs,
lineSymbol: sls
//replace by options.container later on
}, dom.byId("Measurement"));
widget.startup();
};
return {
init: init
};
});
La solution à cette erreur doit être invalidante soit parseOnLoad en définissant data-dojo-config="parseOnLoad: false"
, lors du chargement de la bibliothèque de arcgis, ou en enlevant parser.parse()
. Mais aucune solution ne fonctionne.
La suppression de l'appel MeasurementLoader.init()
supprime également les erreurs, ce qui indique que mon code provoque un second appel d'analyse ou produit un ID en double. Puisque mon DOM ne contient qu'une fois "dijit_layout_ContentPane_0", je privilégie la première option.
Qu'est-ce que je fais mal?
EDIT: Simplified JsFiddle qui reproduit le problème. J'ai supprimé les bits non essentiels et j'ai tout placé dans un fichier source pour le rendre plus clair.
peut-être avez-vous d'autres données-dojo-type = "dijit/layout/ContentPane" dans votre application? –
Oui bien sûr, beaucoup. N'était pas un problème avant – Marco
Est-il possible de créer un exemple Jsfiddle ou n'importe où .. où nous pouvons reproduire la même erreur? –