在我的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];
发布于 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));
发布于 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));
发布于 2016-04-15 22:39:30
呼,我寻找这个答案已经很久了,但幸好它就在这里。更新一下,因为遗留的promise方法success
和error
已经被弃用了,我们应该使用标准的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
});
https://stackoverflow.com/questions/19116815
复制相似问题