Javascript 访问内部ng repeat对象以适应表

Javascript 访问内部ng repeat对象以适应表,javascript,angularjs,html,authentication,Javascript,Angularjs,Html,Authentication,我正在以JSON格式从后端调用获取这些数据。在创建一个数据结构来处理首页上的数据、从中获取响应并将其发送回后端时,我面临很多问题 [ { "name": "dataAccess", "description": null, "type": null, "permission": [ { "name": "delete", "description": null, "enabled": false

我正在以JSON格式从后端调用获取这些数据。在创建一个数据结构来处理首页上的数据、从中获取响应并将其发送回后端时,我面临很多问题

[


{
    "name": "dataAccess",
    "description": null,
    "type": null,
    "permission": [
      {
        "name": "delete",
        "description": null,
        "enabled": false
      },
      {
        "name": "edit",
        "description": null,
        "enabled": false
      },
      {
        "name": "export",
        "description": null,
        "enabled": false
      },
      {
        "name": "write",
        "description": null,
        "enabled": false
      },
      {
        "name": "read",
        "description": null,
        "enabled": false
      }
    ]
  },
  {
    "name": "entity",
    "description": null,
    "type": null,
    "permission": [
      {
        "name": "export",
        "description": null,
        "enabled": false
      },
      {
        "name": "edit",
        "description": null,
        "enabled": false
      },
      {
        "name": "write",
        "description": null,
        "enabled": false
      },
      {
        "name": "read",
        "description": null,
        "enabled": false
      },
      {
        "name": "delete",
        "description": null,
        "enabled": false
      }
    ]

  }
]
有对象名称、权限名称和与对象相关的权限。外部循环名称指定对象名称(例如:Dataaccess),内部循环(权限)指定此Dataaccess对象具有的权限(即删除、读取等)。 这些权限不是静态的,可以随时添加到SQL中,因此我必须创建一个数组

下面是我在HTML页面中想要的内容

表的行将是权限名称,列将这些权限映射到对象

 ModuleName      Read        Edit      Delete       Export      write
 dataAccess    CheckBox  Checkbox    ChecckBox    CheckBox    CheckBox
 Entity        CheckBox  Checkbox    ChecckBox    CheckBox    CheckBox
这些复选框的值是这些权限具有的值,即如果为false,则该特定对象权限的复选框将取消选中,反之亦然

用户可以编辑此页面,取消选中复选框,我必须返回具有更新值的相同JSON数组

我尝试在html中的ng repeat中使用ng repeat,但结果是两个head,因为我现在有两行。它们会随着行数的增加而增加,这是我不想要的


我已尝试创建自定义筛选器,但无法正确放置权限。它们总是顺序不匹配。如果我能做到这一点,我就无法获取更新后的值。

最后我自己找到了

这是我在控制器中所做的,我按顺序重新排列了数据序列

angular.forEach(data,function(maindata,mainkey){

                $scope.PermissionNames=[];  
                maindata.permission.sort(function(a, b){
                     var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase()
                     if (nameA < nameB) //sort string ascending
                      return -1 
                     if (nameA > nameB)
                      return 1
                     return 0 //default return value (no sorting)
                    });

                $scope.ObjectPermissions.push({name:maindata.name,permission:maindata.permission}); // Main Data

                angular.forEach(maindata.permission,function(childData,childKey){
                    $scope.PermissionNames.push({name:childData.name});

                });

                $scope.PermissionNames.sort(function(a, b){
                 var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase()
                 if (nameA < nameB) //sort string ascending
                  return -1 
                 if (nameA > nameB)
                  return 1
                 return 0 //default return value (no sorting)
                });

            });
angular.forEach(数据,函数(主数据,主键){
$scope.PermissionNames=[];
maindata.permission.sort(函数a,b){
var nameA=a.name.toLowerCase(),nameB=b.name.toLowerCase()
if(nameA名称B)
返回1
返回0//默认返回值(无排序)
});
$scope.ObjectPermissions.push({name:maindata.name,permission:maindata.permission});//主数据
angular.forEach(maindata.permission,function)(childData,childKey){
$scope.PermissionNames.push({name:childData.name});
});
$scope.PermissionNames.sort(函数(a,b){
var nameA=a.name.toLowerCase(),nameB=b.name.toLowerCase()
if(nameA名称B)
返回1
返回0//默认返回值(无排序)
});
});
所以它们总是会被排序,然后我在HTML中像这样使用它\

<table class="table table-bordered table-bordered">
        <thead >
        <tr>
            <th>Module</th>
            <th ng-repeat="maindata in PermissionNames">{{maindata.name}}</th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="Object in ObjectPermissions ">
            <td >{{Object.name}}</td>
            <td ng-repeat="permissionValue in Object.permission" >

                    <input type="checkbox" ng-model="permissionValue.enabled"  
                            ng-checked="permissionValue.enabled"
                            ng-click="checkValue($parent.$index,$index,permissionValue.enabled)">

            </td>

        </tr>
        </tbody>
    </table>

模块
{{maindata.name}
{{Object.name}

这对任何面临类似问题的人有何帮助

您的权限不是以相同的顺序出现的。是的,这是一个问题,权限是相同的,但当我从后端发送时,它们将不会以相同的顺序出现>,而且,权限数未知,它可以增加或减少。因此它是在数组中的,换句话说,它应该是在数组中的对象。