如何为以下JSON编写ng-repeat?

时间:2017-07-14 12:45:10

标签: javascript angularjs json

我的模板代码:

        <tr ng-repeat="row in dataList">
          <tr ng-repeat-start="row in dataList[$index].data" ng-if="dataList.data.[columnDisplayData[$index].colName].showRow">

我的 Json数据对象

{
   "reportId":1,
   "tableData":
     [
      {
         "data":{
            "data":[
               {
                  "Comp Set(Group)":{
                     "showRow":true,
                     "row":{
                        "sunday":7.1,
                        "saturday":19.1,
                        "total":"19.3",
                        "tuesday":23.4,
                        "weekend":"19.9",
                        "weekday":"19.0",
                        "friday":20.7,
                        "thursday":23.2,
                        "wednesday":23.4,
                        "monday":17.9
                     }
                  },

                  "%C(Transient)C":{
                     "showRow":true,
                     "rowName":"per_C_ransient_C",
                     "row":{
                        "sunday":"-15.5",
                        "saturday":"18.9",
                        "total":"-4.5",
                        "tuesday":"-14.4",
                        "weekend":"12.6",
                        "weekday":"-11.4",
                        "friday":"6.4",
                        "thursday":"2.1",
                        "wednesday":"-21.2",
                        "monday":"-7.8"
                     }
                  }
               }
            ]
         },
         "hotelName":"XYZ"
      },

     ...

   ]
}

我希望ng-repeat用于数据数组,然后用ng-repeat hotelName。     首先,{strong> hotelName 上的ng-repeat,然后是相同jsonObject的数据。     拜托,建议我这个。

我的预期格式应如下表所示

hotelName               
Sunday  Monday  Tuesday Wednesday   Thursday    Friday  Saturday    Weekday
data    data    

hotelName                           
Sunday  Monday  Tuesday Wednesday   Thursday    Friday  Saturday    Weekday

hotelName                           
Sunday  Monday  Tuesday Wednesday   Thursday    Friday  Saturday    Weekday

2 个答案:

答案 0 :(得分:0)

在控制器中使用此功能,并在$scope.arr

中调用ng-repeat

$ scope.arr = new Array(); $ scope.setData = function(){

for(i = 0 ; i < $scope.dataList.tableData.length ; i++){


    for(j= 0 ; j < $scope.dataList.tableData[i].data.data.length ; j++){
        $scope.arr[i] ={"hotelName":$scope.dataList.tableData[i].hotelName , "days":$scope.dataList.tableData[i].data.data[j]['Comp Set(Group)'].row};
    }
}

}

查看:

             旅馆         星期一         星期二         星期三         星期四         星期五         星期六         星期日         总         周末         平日          
         {{data.hotelName}}     {{data.days.monday}}     {{data.days.tuesday}}     {{data.days.wednesday}}     {{data.days.thursday}}     {{data.days.friday}}     {{data.days.saturday}}     {{data.days.sunday}}     {{data.days.total}}     {{data.days.weekend}}     {{data.days.weekday}}   

答案 1 :(得分:0)

您在ng-repeat中有一点误解。

您可以传递给以后ng-repeat,已经从前一个ng-repeat解析的对象;所以,如果你有类似的东西:

$scope.data = {
    key1: {},
    key2: {}
}

在你的html中写这个:

<tr ng-repeat="d in data">
    <td ng-repeat="(key, value) in d">
        {{key}}: {{value}}
    </td>
</tr>

表示:“嘿Angular,在第一个ng-repeat中为我提供$scope.data中的所有对象并为每个对象创建tr;然后,在第二个ng-repeat中给我第一个ng-repeat给你的对象的所有键和相关值,并为每个键创建一个td

无论如何,要实现目标,您需要在表格中嵌套一些表格,如plunkr所示。通过这种方式,您可以使用json获得所需的视图。