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