Javascript 访问内部ng repeat对象以适应表
我正在以JSON格式从后端调用获取这些数据。在创建一个数据结构来处理首页上的数据、从中获取响应并将其发送回后端时,我面临很多问题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
[
{
"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}
这对任何面临类似问题的人有何帮助您的权限不是以相同的顺序出现的。是的,这是一个问题,权限是相同的,但当我从后端发送时,它们将不会以相同的顺序出现>,而且,权限数未知,它可以增加或减少。因此它是在数组中的,换句话说,它应该是在数组中的对象。