を選択すると、私はこのようなrolePermissionListという名前のオブジェクトのリストを持っている:すべてのチェックボックスのチェックを得ている私はちょうど1
[{"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です。
ページをロードすると、チェックされるはずのチェックボックスがチェックされます。この部分はうまく動作しますが、別のチェックボックスをチェックするとすべてのチェックボックスがオンになり、チェックボックスをオフにすると同じチェックが行われますチェックされていません。
私はディレクティブng-checked="permission.checked"
を使用する前に、これが働いチェックされ、チェックボックスのすべてのIDSを、取得するためにidsPermission
という名前の番号のリストを使用しますが、今私はあるチェックボックスを表示する必要があるので、今、私はそれを使用する必要があります既にマークされています。
これは、この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}]
と私はコントローラで行う、そのリストを反復処理するとマークされたフィールドがあるかどうかを確認されRolService.getListCheckBoxesEditRole(idRole)サービスが返す私のコントローラ
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);
]);
です1
もしあれば1
私はこれを行うd[permission ].checked = true;
私はその行で私が考えると、チェックされた値をtrueに設定しているので、この指示文をHTMLビューで使うことができますng-checked="permission.checked"
ng-checked="idsPermission[permission.checked]"
これを試してみましたが、これを行うと、上記の貼り付けたJSONの値がmarked=1
で、ページを読み込んだときにチェックされていませんでしたが、このように置くとは、チェックボックスをクリックすると、すべてのチェックボックスが選択されます。
問題を再現plunkerのデモを作成します。 – charlietfl