我有两个具有多对多关联的模型——一个角色有很多权限,同样一个权限可能属于多个角色。
现在我有一个允许用户创建新角色的视图;我想为他们添加选择角色具有哪些权限以及创建/删除权限并分配它们的能力。这是我现在正在查看的内容:
示例角色 JSON
现在我将当前分配的权限嵌套在每个角色中:
{
id: 1,
name: "Manager",
permissions: [
{
id: 2,
name: "Send Email"
}
]
}
角色控制:
MyApp.factory('Role', function($resource) {
var Role = $resource('roles/:id', {id: '@id'}, {});
return Role;
}).factory('Permission', function($resource) {
var Permission = $resource('permissions/:id', {id: '@id'}, {});
return Permission;
});
function RoleCtrl($scope, $routeParams, Role, Permission) {
$scope.role = Role.get({id: $routeParams.id });
$scope.permissions = Permission.query();
$scope.role.save = function() {
$scope.role.$update(
function() { /* success */ },
function(response) { /* errors */ }
);
};
$scope.hasPermission = function(permission) {
return _.find($scope.role.permissions, function(p) {
return p.id == permission.id;
}) !== undefined;
};
}
看法
<div ng-controller="RoleCtrl">
<form ng-submit="save()">
<input type="text" ng-model="role.name">
<button type="submit">Submit</button>
<ul>
<li ng-repeat="permission in permissions">
<label class="checkbox">
<input type="checkbox" value="{{permission.name}}" ng-checked="hasPermission(permission)">{{permission.name}}
</label>
</li>
</ul>
</form>
</div>
到目前为止,我所做的只是正确设置复选框的初始值,但我觉得我可能会以错误的方式处理这个问题。我对 Angular 还很陌生,所以我试图找出最好的方法是:
- 如果复选框更改,则更新与角色关联的权限
- 在编辑角色时创建新权限或删除权限。