[AngularJS]AngularJS 服务初始化和获取第三方组件

发布时间: 2017/4/16 21:05:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在与 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) 线因为推迟是未定义的。

我到底做错了?

解决方法 1:

试试这个︰

this.getMap = function(){
    return deferred.promise;
};

然后,使用︰

MapService.getMap().then(function (map) {

});
赞助商