工厂函数不返回数据
Factory function not returning data
我有一个 angularjs 工厂通过 $http.get()
获取数据:
'use strict';
app.factory('apiService', ['$http', function ($http) {
var apiService = {};
apiService.urlBase = 'http://localhost:1337/api/';
apiService.get = function (urlExtension) {
$http({
method: 'GET',
url: apiService.urlBase + urlExtension
}).then(function successCallback(response) {
return response.data;
}, function errorCallback(response) {
console.log(response);
});
}
return apiService;
}]);
问题是,当我调用 apiService.get() 方法时,它总是 returns undefined
;在控制器中。当我在工厂中记录响应数据时,它会显示正确的数据。 apiService.urlBase 变量始终填充在我的控制器中。
你们有什么建议还是我做错了什么?可能是语法错误。
您没有返回 $http
返回的承诺。在$http
之前添加return
好的,我解决了这个问题。我刚刚通过参数为我的 get() 函数传递了一个回调函数。
'use strict';
app.factory('apiService', ['$http', function ($http) {
var apiService = {};
apiService.urlBase = 'http://localhost:1337/api/';
apiService.get = function (urlExtension, callback) {
var data = {};
$http({
method: 'GET',
url: apiService.urlBase + urlExtension
}).then(function successCallback(response) {
data = response.data;
callback(data);
}, function errorCallback(response) {
console.log(response);
});
return data;
}
return apiService;
}]);
我有一个 angularjs 工厂通过 $http.get()
获取数据:
'use strict';
app.factory('apiService', ['$http', function ($http) {
var apiService = {};
apiService.urlBase = 'http://localhost:1337/api/';
apiService.get = function (urlExtension) {
$http({
method: 'GET',
url: apiService.urlBase + urlExtension
}).then(function successCallback(response) {
return response.data;
}, function errorCallback(response) {
console.log(response);
});
}
return apiService;
}]);
问题是,当我调用 apiService.get() 方法时,它总是 returns undefined
;在控制器中。当我在工厂中记录响应数据时,它会显示正确的数据。 apiService.urlBase 变量始终填充在我的控制器中。
你们有什么建议还是我做错了什么?可能是语法错误。
您没有返回 $http
返回的承诺。在$http
return
好的,我解决了这个问题。我刚刚通过参数为我的 get() 函数传递了一个回调函数。
'use strict';
app.factory('apiService', ['$http', function ($http) {
var apiService = {};
apiService.urlBase = 'http://localhost:1337/api/';
apiService.get = function (urlExtension, callback) {
var data = {};
$http({
method: 'GET',
url: apiService.urlBase + urlExtension
}).then(function successCallback(response) {
data = response.data;
callback(data);
}, function errorCallback(response) {
console.log(response);
});
return data;
}
return apiService;
}]);