javascript - ng 在数组中重复数组

标签 javascript arrays angularjs

我试图在 Angular 中使用 ng Repeat 来重复多维数组的子数组。 我的 json 对象是这样的:

 $scope.items =   [{    "id":1,
        "BasisA":"1",
        "Basis":true,
        "personSex":"m",
        "isCollapsed":false,
        "name":"Mark Polos",
        "age":"1955",
        "results":[{"1000":{"company_name":"***","model":"***","modelname":"***","pr":222,"rating":4.5,"priority":9,"matching":1},
                    "1001":{"company_name":"***","model":"***","modelname":"***","pr":228.7,"rating":5.7,"priority":7,"matching":2},
                    "1002":{"company_name":"***","model":"***","modelname":"***","pr":241.7,"rating":1.9,"priority":4,"matching":3}
                }]
    }]

我尝试过这样的事情:

... data-ng-repeat="item in items">

然后在这个 child 的表中:

<tr data-ng-repeat="i in item | orderBy:'insItem.pr'">

最佳答案

结果属性看起来实际上并不是一个“数组”。如果这只是您的示例中的拼写错误,请忽略。如果没有......请继续阅读。

它看起来像一个包含单个项目的数组,该项目是一组属性,而这些属性又是对象。换句话说,您可以使用类似于 item.results[0]["1000"].pr 的代码来引用名为“1000”的结果的属性“pr”,而不是使用看起来像的代码你的 ng-repeat 期望的方式(item.results[0].pr)。

您能否在获得项目时对其进行转换,以使结果成为真正的数组?

或者 - 您可以在 Controller 内部使用一个函数来返回您正在查找的数组吗?

查看代码:

<... data-ng-repeat="result in resultsFromItem(item)" >

Controller 代码:

$scope.resultsFromItem = function (item) {

   if(item==undefined || item.results==undefined || item.results.length==0) {
      return [];
   }

   var myResults = [];
   for (var key in item.results[0]) {
      if(item.results[0].hasOwnProperty(key)) {
         myResults.push(item.results[0][key]);
      }
   }

   return myResults;

}

如果您愿意,您甚至可以决定将“转换后”的结果对象卡在每个项目对象上(这样您只需执行一次转换)。

关于javascript - ng 在数组中重复数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34774423/

相关文章:

javascript - jQuery 将值写入输入字段的 "value"属性

javascript - 更改字体 new "No CAPTCHA reCAPTCHA"

arrays - 将 [Int?] 转换为 [Int]

java - 迭代 LinkedHashMap 值未排序?

javascript - 如何正确地对 Angular 指令进行单元测试

javascript - 所有 AngularJS Controller 均未使用 LazyLoad 加载

javascript - $rootScope 未在简单的 AngularJs 路由示例中呈现

javascript - 比较 3 个 JavaScript 变量

arrays - 数组中的最大总和使得最多可以选择 5 个元素中的 2 个连续

Javascript 类和范围