2016-04-13 2 views
1

Я использую угловой 1.4 для того, чтобы вызвать REST API, но я GET

AngularJS 10 $ дайджеста() итераций достигнуто. Aborting

Это мой services.js

(function (angular) { 
'use strict'; 

angular.module('myApp.services.dashboard', []) 
     .factory('DashboardService', DashboardService); 

DashboardService.$inject = ['$http', '$q', 'EndpointUrl']; 

function DashboardService($http, $q, EndpointUrl) { 
    function getStatus() { 
     var deferred = $q.defer(); 

     return $http.get(EndpointUrl + 'status') 
       .then(successRequest, failRequest); 

     function successRequest(data) { 
      deferred.resolve(data.data); 
      return deferred.promise; 
     } 
     ; 

     function failRequest() { 
      deferred.reject([]); 
      return deferred.promise; 
     } 
     ; 
    }; 
}; 

})(angular); 

И это мой app.js

.config(function ($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider, $compileProvider) { 
       $locationProvider.html5Mode(false).hashPrefix('!'); 
       $compileProvider.debugInfoEnabled(false); 

       $stateProvider 
         .state('dashboard', { 
          controller: 'DashboardController as dashboard', 
          url: '/app/dashboard', 
          templateUrl: '/assets/js/src/dashboard/templates/dashboard.html', 
          resolve: { 
           getStatus: function (DashboardService) { 
            return DashboardService.getStatus(); 
           } 
          } 
         }); 

       $urlRouterProvider.otherwise('/app/dashboard'); 
       $httpProvider.defaults.useXDomain = true; 
       delete $httpProvider.defaults.headers.common['X-Requested-With']; 
      }) 

Мои controller.js не выполняет ничего:

(function (angular) { 
    'use strict'; 
    angular.module('myApp.controllers.dashboard', []) 
      .controller('DashboardController', DashboardController); 
    DashboardController.$inject = ['$rootScope', '$state', '$filter', 'DashboardService', 'DashboardPeriods', 'getStatus']; 
    function DashboardController($rootScope, $state, $filter, DashboardService, DashboardPeriods, getStatus) { 

    } 
    ; 

})(angular); 

Так что я действительно не понял, почему я получаю итерации $ digest() ,
REST API просто возвращает json, который является одним и тем же каждый раз.

+0

https://docs.angularjs.org/error/$rootScope/infdig –

ответ

0

Вы возвращаете $ http Promise, а затем откладываете процент от своих обратных вызовов, которые могут вызывать цикл. Удалите $ http return. Move offfer.promise возвращает методы обратного вызова и возвращает это вместо метода getStatus.

function DashboardService($http, $q, EndpointUrl) { 
    function getStatus() { 
     var deferred = $q.defer(); 

     $http.get(EndpointUrl + 'status') 
       .then(successRequest, failRequest); 

     function successRequest(data) { 
      deferred.resolve(data.data); 
     }; 

     function failRequest() { 
      deferred.reject([]); 
     }; 

     return deferred.promise; 
    }; 
    return {'getStatus': getStatus}; 
}; 
+0

Это не решает мою проблему. – Mattia

+0

см. Редактирование. я не заметил вашего возврата в $ http. –

+0

Да, но, как сказано ранее, я все равно получаю ту же ошибку. – Mattia