2016-06-23 93 views
1

我想在AngularJS中渲染圖表。函數在AngularJS中返回undefined

服務TrendChartFactory發出獲取請求來檢索數據,有兩個參數作爲輸入。現在

我的問題是,當我打電話,讓我使用從GET請求接收數據則返回undefined的功能getValue()

你有什麼想法我該如何解決這個問題?

在此先感謝。

angular.module('App') 
.directive('Trend',function(){ 
    return { 
     restrict: 'E', 
     templateUrl: 'app/trend/trend.html', 

     scope: { 
      card: '=', 
      puName: '<', 
      selectedItem: '<' 
     }, 
     controller: function($scope, $rootScope, $filter, TrendChartFactory) { 

      $scope.$watch('selectedItem', function() { 
       console.log($scope.selectedItem); 
       console.log("ChangedSelected"); 
       TrendChart();    
      }, true); 


      $scope.$watch('puName', function(){ 
       console.log($scope.puName); 
       console.log("ChangedpuName"); 
       TrendChart(); 
      },true); 

      $scope.labels = ['2006', '2007', '2008', '2009', '2010', '2011', '2012']; 



      function getValue(selectedV,trendV) { 

        for(var i= 0; i< trendV.length;i++) { 

         console.log(trendV[i][selectedV]); 
         $scope.data.push(trendV[i][selectedV]); 
        } 

        $scope.datta.push($scope.data); 
        console.log($scope.datta); 
      } 

      function TrendChart(){ 

        $scope.data = []; 
        $scope.datta = []; 

        TrendChartFactory.get({ 
        Item: $scope.selectedItem.key, 
        puItem: $scope.puName},function(data){ 

         $scope.trendValues = data;       
         console.log($scope.trendValues); 

        }); 
        getValue($scope.selectedItem.key,$scope.trendValues); 

      } 
     }, 
     controllerAs: "TrendCtrl" 
    }; 
}) 
+0

您需要添加$ scope.getValue而不是getValue – user2323308

回答

0

getValue($scope.selectedItem.key,$scope.trendValues);運行內部TrendChartFactory回調之前運行。

你需要把它放在裏面。

TrendChartFactory.get({ 
    Item: $scope.selectedItem.key, 
    puItem: $scope.puName},function(data){ 

    $scope.trendValues = data;       
    console.log($scope.trendValues); 
    getValue($scope.selectedItem.key,$scope.trendValues); 

});