AngularJS App中的ArcGIS Javascript - 加载模块时出错

时间:2015-11-09 14:09:05

标签: angularjs dojo require arcgis-js-api

我有一个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模块上出现这个错误吗?

2 个答案:

答案 0 :(得分:3)

单参数require仅适用于已加载的模块。根据{{​​1}}错误判断,您尝试在从未加载的模块上使用单参数undefinedModule。要引用尚未加载的模块,您需要使用标准的AMD require语法:

require

始终使用此格式通常最简单。 (它也可以被认为更可靠,因为否则您可能依赖于假设您已经使用的模块已经被加载,无论是直接还是间接作为依赖。)

答案 1 :(得分:2)

此外,我不知道您是否已经看过这个,但Esri确实有一些角度模块可以帮助将地图集成到Angular应用程序中:

https://github.com/Esri/angular-esri-map

包括一个名为esriLoader的服务,它包含了Dojo的require,并允许您传递一个回调函数,该函数将接收模块或获得一个解析为带有模块的数组的承诺。