我有一个编辑表单,它为“项目”保存模型数据。该项目有一组用户分配给它,并且控制器有整个用户列表可供分配的另一个阵列。该表单目前列出所有可用用户,我想要做的是勾选已分配给项目的用户,如果用户修改了此列表的选中/未选中项目,请更新相关的project.users属性。绑定模型到多选框
代码为:http://plnkr.co/edit/e2Rc45mgWDkgdHxz1bz0?p=preview
控制器
angular.module('app', [])
.controller('ProjectsController', ['$scope', function($scope) {
$scope.project = {"projectID":"26","projectName":"project one","projectDescription":"blah",
"users":[{"userFullName":"Ian","userID":"2"},
{"userFullName":"Kevin","userID":"33"},
{"userFullName":"Peter","userID":"32"}]
};
$scope.collaborators = [
{"userID":"2","userFullName":"Ian"},
{"userID":"33","userFullName":"Kevin"},
{"userID":"32","userFullName":"Peter"},
{"userID":"31","userFullName":"Tom"}
];
$scope.updateProject = function(project){
console.log(project);
}
}]);
表格
<form name="editProjectForm" novalidate ng-submit="updateProject(project)" >
<label>Name</label><BR>
<input type="text" ng-model="project.projectName" class="form-control" required><BR><BR>
<label>Description</label><BR>
<textarea ng-model="project.projectDescription" class="form-control" required></textarea>
<br>
<label>Assigned to work on project</label><BR>
<label ng-repeat="collaborator in collaborators">
<input type="checkbox" ng-model="???" /> {{collaborator.userFullName}}
</label>
<BR> <BR>
<input type="submit" value="Update project details" class="btn btn-primary">
</form>
http://plnkr.co/edit/e2Rc45mgWDkgdHxz1bz0?p=preview
谢谢,尽管我想实际上“干涉”项目模型并更新project.users以包含所有选中项目的数组。虽然我可以遍历$ scope.checked并重建project.users,但是在数据绑定方面是否有更多的“角度”方法? – 2014-09-29 16:49:32
[Plunkr](http://plnkr.co/edit/4cwlMmyCmrnb46YNY95F?p=preview)。是的,我会将'$ scope.project.users'的格式切换到一个简单的用户ID数组。然后在更新'$ scope.checked'模型时,调整'$ scope.projects.users'。 – 2014-09-29 20:57:08