首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将值传递给AngularJS $http成功回调

如何将值传递给AngularJS $http成功回调
EN

Stack Overflow用户
提问于 2013-10-01 20:57:34
回答 3查看 16.5K关注 0票数 17

在我的AngularJS应用程序中,我执行以下操作

$http.get('/plugin/' + key + '/js').success(function (data) {
    if (data.length > 0) {
        console.log(data);
        // Here I would also need the value of 'key'
    }
});

现在,我需要访问成功回调中的key值,也就是说,我需要知道发出get()请求时它具有哪个值。

有什么“最佳实践”要怎么做吗?

PS:我可以做以下事情,但是有没有更好的方法呢?

var key = config.url.split('/')[2];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-01 22:35:46

解决方案1:

$scope.key = key;
$http.get('/plugin/' + key + '/js').success(function (data) {
    if (data.length > 0) {
        console.log(data, $scope.key);
    }
});

解决方案2(根据Jim Hong在他的回答中的观察更新):

$http.get('/plugin/' + key + '/js').success((function(key) {
    return function(data) {
        console.log(key, data);
    }
})(key));
票数 23
EN

Stack Overflow用户

发布于 2016-04-13 20:33:26

另一种更简洁的方法是创建一个回调函数,并使用参数调用它,而不是污染作用域或使iif复杂化;

var myCallBack = function (key) {
  return function (data) {
    if (data.length > 0) {
      console.log(data, key);
    }
  }
}

$http.get('/plugin/' + key + '/js').success(myCallBack(key));
票数 2
EN

Stack Overflow用户

发布于 2016-04-15 22:39:30

呼,我寻找这个答案已经很久了,但幸好它就在这里。更新一下,因为遗留的promise方法successerror已经被弃用了,我们应该使用标准的then方法。

@geniuscarrier和@jim-horng答案中的解决方案2可以重写为:

$http.get('/plugin/' + key + '/js').then(
    (function(key) {
        return function(data) {
            console.log(key, data);
        }
    })(key),
    function(data) {
        //error handle
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19116815

复制
相关文章

相似问题

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