我有一个从后面获取数据的工厂服务,我试图填充一个本地数组,如下所示:
(function() {
app.controller('UpdateProvidersCtrl', ['$scope', 'ngDialog', '$http', 'Provider', '$resource', '$window','SpecialtyService', function($scope, ngDialog, $http, Provider, $resource, $window,SpecialtyService) {
var specialties = [];
SpecialtyService.getService().then(function(data){
$scope.specialty = data;
angular.forEach(data.specialty, function(item){
specialties.push(item);
);
});
console.log(specialties);
console.log返回一个空数组,我知道正在检索数据,因为我已经放置了其他console.log消息,并且promise返回了一个数组。
这是我的服务
app.factory('SpecialtyService', ['$resource', function($resource) {
function SpecialtyService() {
this.service = $resource('/api/specialty_search');
};
SpecialtyService.prototype.getService = function() {
return this.service.get().$promise;
};
return new SpecialtyService;
}]);
由于异步调用,它是否返回空?或者我做了一些根本错误的事情?
答案 0 :(得分:1)
试试这个:
function() {
app.controller('UpdateProvidersCtrl', ['$scope', 'ngDialog', '$http', 'Provider', '$resource', '$window','SpecialtyService', function($scope, ngDialog, $http, Provider, $resource, $window,SpecialtyService) {
var specialties = [];
SpecialtyService.getService().then(function(data){
$scope.specialty = data;
angular.forEach(data.specialty, function(item){
specialties.push(item);
);
console.log(specialties);
});
由于您的服务调用是异步的,您需要将console.log添加到正确的位置(回调)。