javascript - AngularJS 服务初始化并获取第三方组件

标签 javascript angularjs

我正在使用 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/

相关文章:

javascript - 使用 AngularJS 更改 URL 中的参数

javascript - 如何使用 javascript 抓取复杂的登录页面?

javascript - TINYMCE 在点击添加图像后添加输入字段

javascript - 角色 Discord.js(在嵌入中打印角色)

javascript - 如何根据时间戳过滤对象数组

c# - 是否可以在客户端使用 silverlight c# 或 javascript 运行 exe 文件?

javascript - 在同一 Controller 中处理不同的 routeParams

javascript - 使用 AngularJS 动态更改 css 属性

javascript - 带有自定义按钮的 UI Bootstrap 控件 uib-carousel

javascript - 我需要将空参数传递给 JavaScript 函数吗?