2015-07-01 32 views
-1

我收到此錯誤..不知道有什麼問題..控制檯錯誤,不知道這樣

類型錯誤:StatisticsService.getStatisticsFromServer不是一個函數

我似乎看到了問題,不知道我在做什麼錯

這是控制器

app.controller('StatisticsCtrl', 
     ['$scope', 
      '$auth', 
      'StatisticsService', 
      function ($scope, $auth, StatisticsService) { 

       var token = $auth.getToken(); 

       console.log('StatisticsCtrl INIT'); 

       function run() { 
        var data = { 

         token: token, 
         timestamp_from: moment(new Date()).unix()-30 * 24 * 3600, 
         timestamp_till: moment(new Date()).unix(), 
         order: 'duration_minutes', 
         limit: 20 
        }; 

//      


        StatisticsService.getStatisticsFromServer(data).then(function (response) { 

         console.log('syncStatistics', (response)); 

           $scope.statistics = response; 
           // $scope.statistics = StatisticsService.buildStatsUsers(response.data); // jason comes from here 



         }, function (error) { 
         console.error(error); 
         }); 
       } 


      run(); 

     }]); 

這是服務器

app.service('StatisticsService', 
     ['apiClient', '$q', '$rootScope', '$timeout', 
      function (apiClient, $q, $rootScope, $timeout) { 

       var self = this; 

       self.getUserProfiles = function (stats) { 

        var emails = []; 

        for (var i = 0; i < stats.length; i++) { 
         emails.push(stats[i].email); 
        } 

        console.log(emails); 

        var data2 = { 
         token: data.token, 
         profile_emails: emails 
        }; 

        apiClient.getUserProfiles(data2).then(function (response2) { 

         console.log('getUserProfiles', (response2)); 

         if (response2.data.length === 0 || response2.result !== "success") { 
          // TODO: show error 
          deferred.reject(response2); 
         } 

         var stats2= response2.data; 

         deferred.resolve(stats);//3 

        } 
        ); 


        self.getStatisticsFromServer = function (data) { 

         var deferred = $q.defer(); //1 


         apiClient.getStatsTopMeeters(data) 

           .then(function (response) { //2 

            console.log('externalApiConnect', response); 


            if (response.data.length === 0 || response.result !== "success") { 
             // TODO: show error 
             deferred.reject(response); 
            } 

            var stats = response.data; 

            stats = self.getUserProfiles(stats); 

            deferred.resolve(stats);//3 
           } 
           , function (error) { 
            deferred.reject(error); 
            console.error(error); 
           }); 

         return deferred.promise; //4 

        }; 
       }; 
      }]); 
+5

那麼,消息說,StatisticsService.getStatisticsFromServer不是一個函數。由於您沒有發佈StatisticsService的定義,我們無法確認和解釋。 –

回答

2

您在函數self.getUserProfiles中定義了self.getStatisticsFromServer。因此,在您撥打getUserProfiles()至少一次之前,該功能在該服務中確實不存在。它在每次調用時都會被替換。我懷疑這就是你想要的。

+0

我分離了這兩個函數,但現在它告訴我數據沒有被聲明,這很奇怪,因爲數據是在api中聲明的。 – omer