我正在使用angularjs和esri arcgis构建以地图为中心的应用程序。
我想创建一个单独的服务,它提供一个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未定义。
我做错了什么?
答案 0 :(得分:1)
试试这个:
this.getMap = function(){
return deferred.promise;
};
然后使用:
MapService.getMap().then(function (map) {
});