Я новичок в 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']});
Чтобы передать область обслуживания из любого места в контроллере. Удостоверьтесь, что вы вводите услуги.
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;
}
};
});
Надеюсь, это поможет.
Ну, одна проблема, которую я вижу, заключается в том, что вы не правильно определили свои службы как зависимости. Вы пропустили 'contadoreco', 'contadorsoc'
строк, 'contadoreco', 'contadorsoc'
чтобы они не вводились в ваш контроллер. Это должно быть так:
aritmetica.controller('encuestaController', ['$scope', 'contadoreco', 'contadorsoc', function($scope, contadoreco, contadorsoc) {
// etc...
}]);
Существует два разных способа ввода зависимостей. Как я уже писал выше или как вы делали здесь:
aritmetica.controller('MyCtrl', function($scope, contadoreco, contadorsoc) {
});
Второй не будет работать, если код будет уменьшен, первый будет.