我有一个AngularJS应用程序,它使用JavaScript的ArcGIS API来显示地图。
我一直在使用个别需求声明,例如:
var esriMap = require("esri/map");
这适用于Dojo layout Dijits的所有模块除外。Problems Calling a Java Class from JRuby。当我尝试添加这样的require语句时:
var Scalebar = require("esri/dijit/Scalebar");
我收到以下错误:
Error: undefinedModule(…) "Error: undefinedModule at Error (native) at d (http://js.arcgis.com/3.12/init.js:15:382) at La (http://js.arcgis.com/3.12/init.js:24:296) at r (http://js.arcgis.com/3.12/init.js:15:476)
如果可能,我想继续使用个别需求声明。有什么理由说我只会在dijit模块上出现这个错误吗?
答案 0 :(得分:3)
单参数require
仅适用于已加载的模块。根据{{1}}错误判断,您尝试在从未加载的模块上使用单参数undefinedModule
。要引用尚未加载的模块,您需要使用标准的AMD require语法:
require
始终使用此格式通常最简单。 (它也可以被认为更可靠,因为否则您可能依赖于假设您已经使用的模块已经被加载,无论是直接还是间接作为依赖。)
答案 1 :(得分:2)
此外,我不知道您是否已经看过这个,但Esri确实有一些角度模块可以帮助将地图集成到Angular应用程序中:
https://github.com/Esri/angular-esri-map
包括一个名为esriLoader
的服务,它包含了Dojo的require,并允许您传递一个回调函数,该函数将接收模块或获得一个解析为带有模块的数组的承诺。