define([ 'dojo/_base/declare' ], function (declare) { return declare('mods.ModuleA', [], { //create module }); });
define([ 'dojo/_base/declare', 'mods/ModuleA' ], function (declare, ModuleA) { return declare([], { //create module createA: function() { console.log(ModuleA); //returns an interger?!?! console.log(mods.ModuleA); //returns module function() /* this.container.addChild(new ModuleA({a: 1, b: 'hi'})); // throws an error because ModuleA = some integer */ this.container.addChild(new mods.ModuleA({a: 1, b: 'hi'})); //legacy works?!?! } }); });
Solved! Go to Solution.
require(['dojo/_base/declare', 'esri/layers/layer', 'esri/layers/TileInfo', 'esri/geometry/Extent'], function (declare, layer, TileInfo, Extent) { var customLayer = declare('modules.CustomLayer', layer, { declaredClass: 'modules.CustomLayer', constructor: function (params) { params = params || {}; this.tileInfo = new TileInfo( /*tile info*/ ); this.fullExtent = Extent( /*extent*/ ); this.initialExtent = Extent( /*extent*/ ); this.loaded = true; this.onLoad(this); } //functions blah blah blah }); return customLayer; });
require(['dojo/_base/declare', 'esri/map', 'modules/CustomLayer', 'dojo/domReady!'], function (declare, Map, CustomLayer) { var map = new Map('map-div', { //map params }); console.log(CustomLayer); //returns integer 3 console.log(modules.CustomLayer); //returns function() map.addLayer(new CustomLayer()); //fail map.addLayer(new modules.CustomLayer()); //works });