【发布时间】:2016-01-12 21:49:44
【问题描述】:
我有两个具有多对多关联的模型——一个角色有很多权限,同样一个权限可能属于多个角色。
现在我有一个允许用户创建新角色的视图;我想为他们添加选择角色具有哪些权限以及创建/删除权限并分配它们的能力。这是我现在正在查看的内容:
示例角色 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 还很陌生,所以我试图找出最好的方法是:
- 如果复选框更改,请更新与角色关联的权限
- 在编辑角色时创建新权限或删除权限。
【问题讨论】:
-
我不知道。但是,您几乎可以肯定在复选框输入中需要一个 ng-model 元素。复选框需要以某种方式连接到模型。
-
我也不知道,但我一直在 Rails 中使用多对多关系。考虑在前端使用角度。我自己想要一些帮助
-
我只想得到任何答案。