函数在AngularJS中返回undefined

时间:2016-06-23 07:15:12

标签: angularjs undefined chart.js

我想在AngularJS中渲染图表。

服务TrendChartFactory发出get请求来检索数据,有两个参数作为输入。

现在,我的问题当我调用函数getValue()时,它使用我从get请求收到的数据,它返回undefined

你知道我怎么能解决这个问题?

提前致谢。

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"
    };
})

1 个答案:

答案 0 :(得分: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);

});