我的用户已预先指定了角色。您可以将任何角色分配给任何用户。
如果用户已经拥有角色=>选中复选框 (您可以取消选中以禁用该角色)
如果用户没有角色:你有"添加"按钮将角色添加到用户。 添加角色时,应出现(并选中)复选框
$scope.users = [];
$scope.roles = ["a", "b", "c"];
$scope.users.push({name: "A", roles: [{type: "a", enabled:true}]});
$scope.users.push({name: "B", roles: [{type: "b", enabled:true}]});
$scope.users.push({name: "C", roles: [{type: "b", enabled:true}, {type: "c", enabled:true}]});
$scope.findUserRole = function(userRoles, role){
for(i in userRoles)
{
var userRole = userRoles[i];
if ( userRole.type === role )
{
return userRole;
}
}
return null;
}
$scope.addUserRole = function(roles, role){
roles.push({type: role, enabled: true});
}
我没有设法在添加角色时显示复选框
你有什么想法吗?
the plunkr:http://plnkr.co/edit/aIROCvAN2YztUdR4C3Pb?p=preview
感谢。
答案 0 :(得分:2)
ng-init
执行一次。正如文档所示,您几乎不应该使用ng-init。
只需避免它并在ng-if:
中获得用户角色<li> {{role}}
<input ng-if="findUserRole(user.roles, role)" type="checkbox" ng-model="userRole.enabled">
<input ng-if="!findUserRole(user.roles, role)" type="button" ng-click="addUserRole(user.roles, role)" value="add">
</li>