我正在尝试构建一个角度服务,该服务将由我的应用程序中的控制器使用。我试图使用$ 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)的函数?