我正在使用 angularjs 和 esri arcgis 构建一个以 map 为中心的应用程序。
我想创建一个单独的服务,它提供一个将返回 map (初始化后)的 getMap
方法和一个执行初始化的 initMap
方法:
// in my controller:
MapService.initMap();
$scope.map = MapService.getMap();
MapService.js:
angular.module('app')
.service('MapService', function($q, esriLoader) {
var deferred = $q.defer();
this.getMap = function(){
if ( angular.isDefined( deferred ) ) return $q.when( deferred );
}
var self = this;
this.initMap = function() {
esriLoader.require(['esri/Map'],
function(Map) {
console.log('require callback');
// Create the map
self.map = new Map({
basemap: 'satellite'
});
console.log('resolve map');
deferred.resolve(map);
});
}
});
我在 deferred.resolve(map)
行上收到错误,因为 deferred 未定义。
我做错了什么?
最佳答案
试试这个:
this.getMap = function(){
return deferred.promise;
};
然后使用:
MapService.getMap().then(function (map) {
});
关于javascript - AngularJS 服务初始化并获取第三方组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554942/