大家好我正在使用angularjs
http
获取方法我根据我的循环动态获取值但我无法从http
获取值获取帮助如何执行此操作并解决问题
for(i=0;i<4;i++){
var stream =i;
$http.get('/ViewGetBUMaterialStream/' + stream ).then(function (response) {
$scope.ViewStreams[i] = response.data;
});
}
答案 0 :(得分:2)
您可以使用let
关键字。这是closures.
let语句声明一个块作用域局部变量,可选择将其初始化为一个值。
for(let i=0;i<4;i++){
var stream =i;
$http.get('/ViewGetBUMaterialStream/' + stream ).then(function (response) {
$scope.ViewStreams[i] = response.data;
});
}
另一种方法是使用Immediately-invoked function expression。
(function(i){
$http.get('/ViewGetBUMaterialStream/' + Stream ).then(function (response)
{
$scope.ViewStreams[i] = response.data;
});
})(i);
答案 1 :(得分:1)
此问题是由于javascript引起的。不幸的是,javascript没有循环的范围,在for循环中声明的变量在函数范围内。您应该使用匿名内部函数并将i的值传递给该功能块。
for(i=0;i<4;i++){
var stream =i;
(function(i){
$http.get('/ViewGetBUMaterialStream/' + Stream ).then(function (response) {
$scope.ViewStreams[i] = response.data;
});
})(i);
}
答案 2 :(得分:1)
尝试将i
绑定到回调中。
for(i=0;i<4;i++){
var stream =i;
$http.get('/ViewGetBUMaterialStream/' + stream ).then(function (response) {
$scope.ViewStreams[i] = response.data;
}.bind(i));
}