无法阅读财产'推迟'未定义的

时间:2017-04-11 20:05:01

标签: javascript jquery angularjs

我正在尝试构建一个角度服务,该服务将由我的应用程序中的控制器使用。我试图使用$ q等待我的服务中的函数执行完成后再继续我的控制器。但是,我无法获得角度来注入/识别$ q。这是代码的相关部分。

angular.module('gservice', [])
.factory('gservice', ['$q', '$rootScope', function($http, $location, $q) {
    // Initialize Variables
    // ------------------------------------------------------
    // Service our factory will return
    var googleMapService = {};

    // Array of locations obtained from API calls
    var locations = [];
    var photos = [];
    var places = [];
    var placeTags = [];

    // Selected Location (intialize to center of America)
    var selectedLat = 39.50;
    var selectedLong = -98.35;

    var map;

    // Functions
    // ------------------------------------------------------
    googleMapService.getPhotos = function() {
        return photos;
    }
    // Refresh the Map with new data.  Function will take new latitiude and longitude coordinates.
    googleMapService.refresh = function (latitude, longitude, $q) {
        // Clears the holding array of locations
        locations = [];

        // Set the selected lat and long equal to the ones provided on the refresh() call
        selectedLat = latitude;
        selectedLong = longitude;
        var deferred = $q.defer();

        var groupHeight1 = document.getElementById('myFormGroup1').clientHeight;
        var groupHeight2 = document.getElementById('myFormGroup2').clientHeight;
        var groupHeight3 = document.getElementById('myFormGroup3').clientHeight;
        var submitHeight = document.getElementById('submit').clientHeight;

        // Perform AJAX call to get all of the records in the db.
        $http.get('/trips')
            .then(function (success) {

            // Convert the results into Google Map Format
            locations = convertLocationsToPoints(success);

            // Initialize map
            initializeMap(latitude, longitude);

            //  Initialize route
            if(locations.length > 0) {
                initializeDirections();
                ;
            }
        }, function (error) {
                console.log('Error' + error);

        });

    };

每当我运行我的应用程序时,都会收到错误:无法读取属性'推迟'未定义的。我已阅读similar questions,但大多数问题都是由于不正确的依赖注入造成的。我相信我已经使用内联注释技术正确地注入了$ q。我已经读过,在内联注释的情况下,显式传递参数是不必要的。我已尝试使用和没有显式参数无济于事。 SOS!

编辑1:

@avat

啊,我明白了。我没有意识到数组元素与函数参数匹配!根据您的建议编辑我的代码后,当我在刷新函数的$ q 外部上进行调用时,我不再收到空引用。但是,当我在刷新函数中调用时,仍然会收到空引用。如何将此依赖项传递给我想要返回的服务对象(googleMapService)的函数?

0 个答案:

没有答案