Jquery 将角度服务数据传递给gaugechart控制器

Jquery 将角度服务数据传递给gaugechart控制器,jquery,angularjs,http,service,promise,Jquery,Angularjs,Http,Service,Promise,我的项目中有一个仪表图表控制器,它必须显示角度服务的数据。但当我调用服务函数时,它不会接受来自服务的数据。以下是我正在尝试的: Controller.js angular.module("app.controllers", []) .controller("gaugeCtrl", ["$scope","config","myService", function ($scope,config,myService) { $scope.gaugeHome = { ga

我的项目中有一个仪表图表控制器,它必须显示角度服务的数据。但当我调用服务函数时,它不会接受来自服务的数据。以下是我正在尝试的:

 Controller.js

 angular.module("app.controllers", [])
 .controller("gaugeCtrl", ["$scope","config","myService",
  function ($scope,config,myService) {
    $scope.gaugeHome = {

      gaugeData: myService.getdata(),
      gaugeOptions: {
        lines: 12,
        angle: 0,
        lineWidth: 0.47,
        pointer: {
          length: 0.6,
          strokeWidth: 0.03,
          color: "#555555"
        },
        limitMax: "false",
        colorStart: config.secondary_color,
        colorStop: config.secondary_color,
        strokeColor: "#F5F5F5",
        generateGradient: !0,
        percentColors: [
          [0, config.secondary_color],
          [1, config.secondary_color]
        ]
      }
    }
  ])
这是我的服务数据。它确实获取数据,但无法传递到控制器代码中的控制器val字段

  var demoService= angular.module('demoService',[])
  .service('myService',function($http,$q){
   var deferred = $q.defer();
  $http.get('http://enlytica.com/RSLivee/rest/census').then(function(data)
   {
     deferred.resolve(data);
 /*var v=0;
 $players=data.data;
    console.log($players.Tweets);
     ($players.Tweets).forEach(function(index, element) {
         v=v+ (index.FAVOURITE_COUNT);
         console.log(index.FAVOURITE_COUNT); 
     });
     console.log(v);
     deferred.resolve(v);*/
   });


this.getdata=function()
{  

var dataarr = [];
var v=0;
deferred.promise.then(function(data)
        {

    $players=data.data;
    console.log($players.Tweets);
     ($players.Tweets).forEach(function(index, element) {
         v=v+ (index.FAVOURITE_COUNT);
         console.log(index.FAVOURITE_COUNT); 
     });
     console.log(v); 
     dataarr.push({ maxValue: 3e3,animationSpeed: 100,val: v})
     console.log(dataarr);
    });

 return (dataarr);

 }
})
我还尝试在controller.js中获取以下数据,但也没有成功:

angular.module("app.controllers", []).controller("gaugeCtrl",["$scope","config","myService",
function ($scope,config,myService) {
var v=0;
var dataarr=[];
 var promise=myService.getdata();
console.log(promise);
var tp=promise.then(function(data)
        {
    $players=data.data;
    console.log($players.Tweets);
     ($players.Tweets).forEach(function(index, element) {
         v=v+ (index.FAVOURITE_COUNT);
        // console.log(index.FAVOURITE_COUNT); 
     });
     console.log(v);
     dataarr.push({ maxValue:800,animationSpeed: 100,val: v});
     console.log(dataarr);
     return dataarr;
    });
   ]}
但是无法访问dataarrv值。是否有一种方法可以将值传递到仪表

提前谢谢

@奥伦德 我更改了Service.js代码:[我删除了DI,因为它抛出了一个错误-->

错误:[ng:areq]http://errors.angularjs.org/1.3.14/ng/areq?      
p0=fn&p1=not%20ananuction%2C%20got%string
错误(本机)
在http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:4847
对某人(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:11576)
结核病(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:11670)
在Function.ab.$$annotate处(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:16:25928)
在e(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:19914)
在Object.instantiate(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:20199)
反对(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:20480)
在Object.e[作为调用](http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:20075)
在对象上。$get(http://localhost:8080/Enlytica18thOnwards/dist/js/app.js:14:19010) ]
Service.js
var demoService=angular.module('demoService',[])
.service('myService',函数($http,$q){
this.getData=函数(){
返回$http.get('http://enlytica.com/RSLivee/rest/census')
.then(功能(数据){
var v=0;
对于(变量i=0;i

但现在这不会从url读取数据。我做错了什么吗?

建议服务返回承诺,因为在许多情况下,请求的数据是从后端异步获取的

以下是服务的粗略实现,以提供可在控制器中使用的承诺:

app.service('myService',['$http','$q',函数($http,$q){
this.getData=函数(){
返回$http.get('http://enlytica.com/RSLivee/rest/census')
.then(功能(数据){
var v=0;
对于(变量i=0;i请尝试以下操作:-

    app.factory("companyData", function ($http) {
return {
        getAll: function (items) {
            var path = "https://dl.dropboxusercontent.com/u/28961916/companies.json"
            $http.get(path).success(items);
        }
    }
});
letus consider this is a service
here this returns items object
if I want to use that items object in controller app.controller("mainController", function ($scope, companyData) {
    //console.log(companyData.getAll());
    companyData.getAll(function (companyDetails) {
        console.log(companyDetails)
    }
    }

谢谢你的回复。但是如果我使用带有$http的return,服务不会读取数据。我已经编辑了代码。我需要更改app.js中的任何内容吗?提前感谢您定义了两个独立的角度模块,一个用于服务(demoService),另一个用于控制器(app.controllers)。我认为这是根本原因。使用单个模块,看看它是否解决了问题。
    app.factory("companyData", function ($http) {
return {
        getAll: function (items) {
            var path = "https://dl.dropboxusercontent.com/u/28961916/companies.json"
            $http.get(path).success(items);
        }
    }
});
letus consider this is a service
here this returns items object
if I want to use that items object in controller app.controller("mainController", function ($scope, companyData) {
    //console.log(companyData.getAll());
    companyData.getAll(function (companyDetails) {
        console.log(companyDetails)
    }
    }