Javascript AngularJS forEach不处理$http响应
获取响应中的值,如下所示:Javascript AngularJS forEach不处理$http响应,javascript,html,angularjs,Javascript,Html,Angularjs,获取响应中的值,如下所示: [{ "Pf": "something1", "label": "" }, { "Pf": "something1", "label": "" }] JS HTML 未从响应中获取键和值请注意,显示在每个循环中被覆盖。确保你的逻辑是正确的。当display是$scope变量时,您需要使用$scope.display而不是display来访问此参数。您的代码应该如下所示: 看法 -->首先,如果显示写入dispaly而不是display,则会出现错
[{
"Pf": "something1",
"label": ""
}, {
"Pf": "something1",
"label": ""
}]
JS
HTML
未从响应中获取键和值请注意,
显示
在每个循环中被覆盖。确保你的逻辑是正确的。当display
是$scope
变量时,您需要使用$scope.display
而不是display
来访问此参数。您的代码应该如下所示:
看法
-->首先,如果显示写入dispaly而不是display,则会出现错误 其次,angular foreach第二个参数是一个函数,它将集合上的迭代器作为第一个参数。在这里,您的集合由两个对象组成,因此在每次迭代中,值将是一个对象,例如:
{
"Pf": "something1",
"label": ""
}
所以,如果您想测试它是否等于“something1”,您必须将它与value.pf而不是value进行比较
您还需要调用response.data,因为response是一种存储有关请求-应答的不同信息的结构
最后,我建议您将显示的值存储在范围中,并将其绑定到ng show指令上,如下所示:
JS
$scope.display = false;
$http({
mode: 'cors',
method: 'GET',
url: '/url/',
headers: {
'Content-Type': 'application/json'
}
}).success(function(response) {
angular.forEach(response.data, function(value, key) {
if (value.pf == "something1") {
$scope.display= false;
} else if (value.pf == "something2") {
display = false;
} else {
display = true;
}
});
});
HTML
<td>
<img src="image.png" uib-tooltip="{{status}}" ng-show="display"/>
</td>
希望有帮助 可能不相关,但您有一个输入错误
dispaly=false代码>m没有从responseAny feedback ASM获取值和密钥?获取response.data时未定义。因此,您的http请求配置不正确。。。。我想你的api不是以“/url/”结尾的。。。。如果url不存在,将永远不会定义响应。更重要的是,模式:'cors'不作为$http方法的参数存在。。。如果有可能,请确保通过向web服务器方法中添加日志来调用api。如果未到达,则必须在此处检查配置:$scope.display;得到overwrite@ASM对不起,我不明白你的意思。请解释您的问题。我没有得到正确的值。我得到的是对象的值,而不是我想要对象的单个值response@ASM使用chrome/firefox开发工具查看您的对象,查看您是否从request@ASM我在代码中添加了一个完整的工作示例。请检查演示plnkr并将其与您的解决方案进行比较。
var app = angular.module('plunker', []);
app.controller('ApplicationController', function($scope, $http) {
$scope.display = false;
$scope.getPanel = $http({
mode: 'cors',
method: 'GET',
url: './data.json',
headers: {
'Content-Type': 'application/json'
}
}).success(function(response) {
original(response);
});
function original (response) {
angular.forEach(response, function(value, key) {
if (value.Pf == "something1") {
$scope.display = false;
} else if (value.Pf == "something2") {
$scope.display = false;
} else {
$scope.display = true;
}
});
console.log($scope.display);
};
});
{
"Pf": "something1",
"label": ""
}
$scope.display = false;
$http({
mode: 'cors',
method: 'GET',
url: '/url/',
headers: {
'Content-Type': 'application/json'
}
}).success(function(response) {
angular.forEach(response.data, function(value, key) {
if (value.pf == "something1") {
$scope.display= false;
} else if (value.pf == "something2") {
display = false;
} else {
display = true;
}
});
});
<td>
<img src="image.png" uib-tooltip="{{status}}" ng-show="display"/>
</td>