RESTful API调用不更新本地数组?

时间:2014-08-24 20:42:49

标签: javascript arrays angularjs

我有一个从后面获取数据的工厂服务,我试图填充一个本地数组,如下所示:

(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;
}]);

由于异步调用,它是否返回空?或者我做了一些根本错误的事情?

1 个答案:

答案 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添加到正确的位置(回调)。