Suite

Utilisez Dojo pour charger des fichiers de configuration de widgets modularisés


J'ai pris une carte Web de base 'ESRI HomeButton' et j'essaie de créer une configuration de carte Web modularisée à partir de celle-ci. Je veux décomposer cette simple carte Web pour l'avoir en utilisant un système de modules avec des fichiers de configuration et plus encore. Ensuite, je peux prendre d'autres cartes Web à usage unique et répartir les widgets dans des fichiers séparés beaucoup plus facilement et aborder tout comme l'environnement FlexViewer.

Le problème que j'ai est que dans mon fichier widgetHomeButton.js, j'ai pris le code HomeButton.js et ajouté en trois lignes…

Dans ma requête, j'ai ajouté "widgets/homebutton/config" pour pointer vers mon fichier config.js. Je dois mentionner que j'ai un fichier package.js qui configure les dossiers de sorte que 'widgets' pointe vers package_path + "path/to/widgets" comme dans l'exemple.

Dans ma fonction, j'ai ajouté widgetConfig comme variable pour stocker le contenu du fichier config.js, qui se trouve être des données de style JSON.

Ensuite, dans le code du widget HomeButton, j'ai ajouté une seule ligne de code qui lit…

console.log( widgetConfig );

Et tout ce que je reçois, ce sont des erreurs. Des idées de ce que je fais mal?


Si je comprends bien votre question, utilisez dojo/text! et JSON.parse pour récupérer la configuration :

Suppose une structure de répertoires comme :

/src/js/MyWidget - /templates - MyWidget.html - MyWidget.js - MyWidgetConfig.js

MonWidget.js :

// Définir le module Widget define( [ "dojo/_base/declare", "dojo/dom-construct", "dojo/text!./templates/MyWidget.html", "dojo/text!./MyWidgetConfig.js", ], function (declare, domConstruct, template, widgetConfigJson) { 'use strict'; // ECMAScript 5 Strict Mode return declare(null, { constructeur: function (map, srcNodeRef) { this.map = map; // place un modèle html domConstruct.place(template, srcNodeRef); // analyse la configuration json dans l'objet. // nom du fichier .js au lieu de .json var widgetConfig = JSON.parse(widgetConfigJson); }); }); });