2015-07-19 81 views
0

我是AngularJS的新成員。我正在編寫一個政治測驗。一切正常,但我有問題在Google圖表中包含這些值。

我讀到我可以使用「服務」將範圍傳遞給另一個控制器,但它不起作用。

這是代碼

var aritmetica = angular.module('aritmetica', ['ngAnimate']); 

aritmetica.factory("contadoreco",function(){ 
     return {}; 
}); 

aritmetica.factory("contadorsoc",function(){ 
     return {}; 
}); 

aritmetica.controller('encuestaController', ['$scope', function($scope,contadoreco,contadorsoc) { 
    $scope.contadoreco= 0; 
    $scope.contadorsoc= 0; 
    $scope.pageClass = 'encuesta'; 
    $scope.sumareco = function(cantidad) { $scope.contadoreco += cantidad}; 
    $scope.restareco = function(cantidad) { $scope.contadoreco -= cantidad}; 
    $scope.sumarsoc = function(cantidad) { $scope.contadorsoc += cantidad}; 
    $scope.restarsoc = function(cantidad) { $scope.contadorsoc -= cantidad}; 
}]); 

aritmetica.controller('MyCtrl', function($scope,contadoreco,contadorsoc) { 
     $scope.name = "Name" 
}); 

aritmetica.directive('chart', function($scope,contadoreco,contadorsoc) { 
    return { 
     restrict: 'A', 

     link: function($scope, $elm, $attr) { 
      // Create the data table. 
      var data = google.visualization.arrayToDataTable([ 
       ['Económico', 'Social'], 
       [$scope.contadoreco, $scope.contadorsoc] 
      ]); 

      var options = { 
       title: 'Age of sugar maples vs. trunk diameter, in inches', 
       hAxis: {title: 'Económico', minValue: -130, maxValue: 130}, 
       vAxis: {title: 'Social', minValue: -130, maxValue: 130}, 
       legend: 'none', 
       width: 400, 
       height:400, 
      }; 

      // Instantiate and draw our chart, passing in some options. 
      var chart = new google.visualization.ScatterChart($elm[0]); 
      chart.draw(data, options); 
     } 
    } 
    }); 

    google.setOnLoadCallback(function() { 
     angular.bootstrap(document.body, ['myApp']); 
    }); 

    google.load('visualization', '1', {packages: ['corechart']}); 

回答

1

將範圍從控制器的任何位置傳遞給服務。 確保您注入服務。

controllersModule.controller('MyCtrl', function($scope, $filter, $http, $compile, ngTableParams, **FactoryYouwant**) 
    { 

     **FactoryYouwant**.getdata($scope.**scopeYoutwantTopass**).then (function(responseData){  
     var ResponseFromServer =responseData.data; 
    } 
服務

controllersModule.factory('**FactoryYouwant**, function($http) { 
    var responseData = null; 

    return { 
     getdata : function(**data**){  (you dont have to use $)     
      responseData = $http.post or whatever actually gets you data; 
      return responseData; 
     } 

     }; 
}); 

我希望這有助於。

0

好一個問題,我可以看到的是,由於正確的依賴關係還沒有定義你的服務。你錯過了字符串'contadoreco', 'contadorsoc',所以他們不會被注入你的控制器。它應該是這樣的:

aritmetica.controller('encuestaController', ['$scope', 'contadoreco', 'contadorsoc', function($scope, contadoreco, contadorsoc) { 
// etc... 
}]); 

有兩種不同的方法來注入依賴關係。就像我上面張貼或像你在這裏所做的:

aritmetica.controller('MyCtrl', function($scope, contadoreco, contadorsoc) { 

}); 

第二個將無法工作,如果代碼已經過壓縮,首先會。

相關問題