使用AngularJS过滤JSON数据,并使用智能表使用ng repeat登记

Filter JSON Data using AngularJS and enlist with ng-repeat using smart tables

本文关键字:智能 ng 登记 repeat 过滤 AngularJS JSON 数据 使用      更新时间:2023-09-26

这是我的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中重复使用offAttribs时,它只抛出关键字as(索引号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]);
        }
    }

我不认为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等