【问题标题】:Return value with a jQuery function使用 jQuery 函数返回值
【发布时间】:2015-07-30 18:47:36
【问题描述】:

如何从以下函数中获取返回值,以便在我的角度控制器中使用返回值:

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


        this.getdata = function() {
            var dataarr = [];
            var v = 0;

            var datarec = function datafetch() {
                $http.get('http://enlytica.com/RSLivee/rest/census').then(function(data) {
                    var v = data.data.Tweets[0].FAVOURITE_COUNT;
                    console.log(data.data.Tweets[0]);
                    return (({
                        maxValue: 4000,
                        animationSpeed: 100,
                        val: v
                    }));
                });
            }
            var datarec = datafetch();
            console.log(datarec);
            return datarec;
        }

    })

【问题讨论】:

  • 你不能,你需要使用一个promise....
  • 我已经尝试过了,在“service.js”以及我的“controller.js”中使用了promise。下面是我在Service.js中使用它的方法stackoverflow.com/questions/30298386/…

标签: jquery angularjs return http-get


【解决方案1】:

我认为这将按预期工作:

 this.getdata = function() {
   return $http.get('http://enlytica.com/RSLivee/rest/census').then(function(data) {
     var v = data.data.Tweets[0].FAVOURITE_COUNT;
     return {
       maxValue: 4000,
       animationSpeed: 100,
       val: v
     };
   });
 }

从控制器消费服务:

//The result of service.getdata() is just a promise, you can chain it howerver you like
service.getdata().then(function(data){
//The data here should be: {  maxValue: 4000, animationSpeed: 100, val: v}
 console.log(data); 
});

【讨论】:

  • 感谢您的回复,但是当我将 return 与 $http/http 一起使用时,它不会从 url 读取数据,如果我不使用 return,我无法将值返回给我的控制器。有什么想法吗?提前致谢
  • 你能用console.log来记录v吗?程序是否到达日志?
  • 是的,我使用了 console.log(v),但它没有到达日志。当我将 [$http,$q] 作为依赖注入时,它首先抛出了一个错误,所以我不得不删除它。这是它与 DI Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=fn&p1=not%20aNaNunction%2C%20got%string at Error (native) ..... 一起显示的错误,所以我删除了“[]”部分,如果我删除了“return”关键字,我仍然可以获得数据,但我无法将其返回控制器。
  • 你可以试试这个小提琴中的代码吗,我认为它可能有效:jsfiddle.net/3qrkww8g
  • 我试过了,当我从小提琴运行它时,它确实显示在控制台中。但我的项目代码中不会发生同样的情况。 tinypic.com/r/2q1z6gj/8这是我的代码结构,我还在controllers div所在的dashboard.html中添加了模块“demoService”。但它仍然不起作用。我还应该在索引文件中添加模块名称吗?提前致谢
猜你喜欢
  • 2011-10-15
  • 2011-10-19
  • 2012-07-02
  • 2019-05-20
  • 2016-05-16
  • 2011-08-26
  • 2015-05-25
  • 2011-02-06
  • 1970-01-01
相关资源
最近更新 更多