这是我的JSON数据。
"ATTRIBS":{
"WWW":
{
HIGH:10,
LOW:1,
NAME:World Wide Web,
TYPE:ON
},
"NET":
{
HIGH:12,
LOW:1,
NAME: Local Net,
TYPE:OFF
}
}
我想在表中列出这个JSON数据(我正在使用智能表),其中我只想列出TYPE:OFF的数据。
我尝试在ng-repeat中使用过滤器,但数据不会填充。
这是我用于列表中的代码:
<tr ng-repeat="(key, value) in offAttribs">
<td>{{value.NAME}}</td>
<td>{{value.key}}</td> //I want abbreviations here i.e, www,NET..etc
<td>{{value.TYPE}}</td>
<td>{{value.LOW}}</td>
<td>{{value.HIGH}}</td>
这是我的控制器的外观,它从其他服务加载JSON数据。
当我在控制器中使用if条件在ng-repeat中使用offAttribs时,它只会抛出键(索引号0,1,2 ...)而不是(JSON的键,即WWW或NET ....) ,
编辑.............工作代码
$scope.offAttribs = [];
for (var key in attribData){
attribData[key]['ABRV'] = key;
if (attribData[key].TYPE == 'OFF' ) {
$scope.offAttribs.push(attribData[key]);
}
}
答案 0 :(得分:0)
我不认为offAttribs
具有您期望的数据结构。 Angular的(key, value) in offAttribs
语法仅在offAttribs
是对象时才有效。在您的代码示例中,offAttribs
是一个数组。
如果您想访问WWW或NET等密钥,则需要offAttribs
作为对象:
$scope.offAttribs = {};
for (var key in attribData){
if (attribData[key].TYPE == 'OFF' ) {
$scope.offAttribs[key] = attribData[key];
}
}
TLDR;数组的键是它的索引。这就是为什么你得到0,1,2而不是WWW,NET等