передача $ scope другому контроллеру $ (используя Google Charts в AngularJS)

0

Я новичок в AngularJS. Я программирую политическую викторину. Все было правильно, но у меня есть проблема, чтобы включить ценности в Google Chart.

Я прочитал, что я могу использовать "службы" для передачи области другому контроллеру, но он не работает.

Это код

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']});
Теги:
scope
charts
controller

2 ответа

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' строк, 'contadoreco', 'contadorsoc' чтобы они не вводились в ваш контроллер. Это должно быть так:

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

Существует два разных способа ввода зависимостей. Как я уже писал выше или как вы делали здесь:

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

});

Второй не будет работать, если код будет уменьшен, первый будет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню