首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问函数外部的值

访问函数外部的值
EN

Stack Overflow用户
提问于 2015-05-25 19:43:32
回答 1查看 431关注 0票数 1

我正在尝试从url获取数据到我的代码中。我正在使用Service.js执行此操作。以下是我的代码

代码语言:javascript
复制
var demoService = angular.module('demoService', [])
.service('myService', function($http, $q) {

var v=0;

this.getdata = function() {
       $http.get('myurl').then(function(data) {
         v = data.data.Tweets[0].FAVOURITE_COUNT;

       });
      return v;  // how to return v from here(doesn't return the function's v)
     }
})

我想通过调用服务在我的AngularJS控制器中使用它:

代码语言:javascript
复制
  myService.getdata()//the v = data.data.Tweets[0].FAVOURITE_COUNT needed here

但问题是,该函数返回0(外部定义的v),而不是我填充它的值!有没有一种方法可以只处理从URL返回的对象,然后传递一个值并返回它?

提前感谢!

EN

Stack Overflow用户

发布于 2015-05-25 19:57:39

$http.get方法返回promise。这意味着数据在返回后被设置为"v“变量。因此,您应该只在promise解析之后才能获取数据。例如:

代码语言:javascript
复制
angular.module('demoService', [])
     .service('myService', function($http, $q) {
     var data = null;
     this.fetchData = function() {
         $http.get('myurl').then(function(data) {
             data = data.data.Tweets[0].FAVOURITE_COUNT;
        });
     }
     this.fetchDataNoSave = function() {
         return $http.get('myurl');
     }
     this.getData = function() {
         return data;
     }
})

angular.module('demoService').controller('ViewCtrl', function(demoService, $scope) {
    demoService.fetchDataNoSave().then(function(data) {
         $scope.v = data.data.Tweets[0].FAVOURITE_COUNT;
    })
    // OR
    demoService.fetchData().then(function() {
         $scope.v = demoService.getData();
    })
})

这些选项的不同之处在于,第一个选项不会在服务中保存状态,而您每次都应该获得这个状态。第二个管理服务中的状态,这意味着每个带有注入服务的控制器都可以访问获取的数据

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30437586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档