我有一个名为 rolePermissionList 的对象列表,如下所示:
[{"id":1,"name":"createUser","type":"user","marked":1},{"id":2,"name":"deleteUser","type":"user","marked":1},{"id":3,"name":"editRole","type":"role","marked":0}]
我ng-repeat
习惯使用该列表中的值重复复选框,如下所示
<div class="form-group">
<label>Role Permissions:</label>
<div class="checkbox" ng-repeat="permission in rolePermissionList">
<label>
<input type="checkbox" ng-model="idsPermission[permission .idPermission ]"
ng-checked="permission.checked">{{permission.name}}
</label>
</div>
</div>
ng-model
复选框的名称是idsPermission
一个数字列表,这些数字是对象的IDS。
当我加载页面时,应该选中的复选框被选中,这部分工作正常,但是当我选中另一个复选框时,所有复选框都被选中,当我取消选中一个复选框时,同样的事情会发生所有复选框都未被选中。
我使用命名的数字列表idsPermission
来获取选中的复选框的所有 IDS,这在我使用指令之前有效ng-checked="permission.checked"
,但现在我需要使用它,因为现在我需要显示已经标记的复选框。
这是我的控制器
angular.module('MyApp')
.controller('RolCtrl', ['$scope', 'RolService',
function ($scope, RolService) {
$scope.idsPermission = {};
$scope.getListCheckBoxesEditRole = function (idRole) {
$scope.selectRol.descripcion;
RolService.getListCheckBoxesEditRole(idRole)
.then(
function (d) {
var userPermissionList = [];
for (var permission in d) {
if (d[permission ].type === 'user') {
if (d[permission ].marked === 1)
{
d[permission ].checked = true;
userPermissionList.push(d[permission ]);
} else {
userPermissionList.push(d[permission ]);
}
}
}
$scope.rolePermissionList = userPermissionList;
},
function (errResponse) {
console.error('ERROR');
}
);
};
}
$scope.getListCheckBoxesEditRole(3);
]);
RolService.getListCheckBoxesEditRole(idRole) 服务返回此 JSON[{"id":1,"name":"createUser","type":"user","marked":1},{"id":2,"name":"deleteUser","type":"user","marked":1},{"id":3,"name":"editRole","type":"role","marked":0}]
我在控制器中所做的是遍历该列表并检查标记的字段1
是否是1
我这样做d[permission ].checked = true;
我认为我在该行中所做的是将选中的值设置为 true,因此我可以在 html 中使用此指令看法ng-checked="permission.checked"
我尝试这样做, ng-checked="idsPermission[permission.checked]"
但是当我这样做时,我在上面粘贴的 JSON 中的值marked=1
在我加载页面时不会出现检查,但是如果我这样放置,ng-checked="permission.checked"
它们会显示为应有的标记,但是当我单击checkbox 所有的复选框都被选中。