wähle Ich habe Liste der Objekte rolePermissionList wie folgt benannt:alle Kontrollkästchen in einer ng-repeat geprüft wird, wenn ich nur eine
[{"id":1,"name":"createUser","type":"user","marked":1},{"id":2,"name":"deleteUser","type":"user","marked":1},{"id":3,"name":"editRole","type":"role","marked":0}]
und ich verwende ng-repeat
Kontrollkästchen zu wiederholen, um die Werte in dieser Liste mit wie dies
<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>
die ng-model
des Kontrollkästchen ist idsPermission
genannt und es ist eine Liste von Zahlen, sind diese Zahlen der IDS der Objekte.
Wenn ich die Seite einchecke, werden die Checkboxen, die überprüft werden sollen, überprüft, aber wenn ich ein anderes checkboxes ankreuze, werden alle checkboxes überprüft, und wenn ich ein checkbox deaktiviere, passiert das Gleiche deaktiviert.
Ich benutze diese Liste von Zahlen idsPermission
Namen alle IDS des Kontrollkästchen zu erhalten, die geprüft werden, dies gearbeitet, bevor ich die Richtlinie ng-checked="permission.checked"
, verwenden aber jetzt brauche ich es zu benutzen, da jetzt muß ich die Kontrollkästchen zeigen, die schon markiert.
das ist mein Controller
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);
]);
Die RolService.getListCheckBoxesEditRole (idRole) -Dienst gibt diese 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}]
und was ich in der Steuerung zu tun ist Iterierte über diese Liste und überprüfen, ob das markierte Feld ist 1
Wenn es 1
ist mache ich das d[permission ].checked = true;
Ich was ich denke, dass ich in dieser Zeile tun, setzt den Checked-Wert auf True, damit ich diese Anweisung in der HTML-Ansicht ng-checked="permission.checked"
Ich habe versucht, dies ng-checked="idsPermission[permission.checked]"
, aber wenn ich dies tun die Werte, die in der JSON sind, die ich oben einfügen nicht überprüft, wenn ich die Seite laden, aber wenn ich es so setzen ng-checked="permission.checked"
sie erscheinen markiert, wie sie sollten, Aber wenn ich ein Kontrollkästchen anklicke, werden alle Kontrollkästchen ausgewählt.
eine Plunker Demo erstellen, das Problem reproduziert – charlietfl