Javascript AngularJS-模型和选项不同时的多选选项
我有多个选择框供用户选择他的角色Javascript AngularJS-模型和选项不同时的多选选项,javascript,angularjs,Javascript,Angularjs,我有多个选择框供用户选择他的角色 <select ng-options="role.name for role in roles" ng-model="user.roles" multiple="multiple"> </select> “角色”-是用户可以选择的角色列表 [{“id”:1,“name”:“版主”},{“id”:2,“name”:“Admin”}] “user.roles”-用户实际拥有的角色列表 {“id”:5,“电
<select ng-options="role.name for role in roles"
ng-model="user.roles"
multiple="multiple">
</select>
“角色”-是用户可以选择的角色列表
[{“id”:1,“name”:“版主”},{“id”:2,“name”:“Admin”}]
“user.roles”-用户实际拥有的角色列表
{“id”:5,“电子邮件”:la@la.la“,”角色“:[{“id”:2,“name”:“Admin”}]}
“角色”和“用户”都是通过ajax动态加载的。
问题是,当我加载已经有角色的用户时,它们不会在选择框中自动选择。如何选择它们?我认为唯一的问题是角色不应该包含任何内容,而应该包含密钥
"roles":[{"id":2}]
以下是如何使用多选:
您需要在数据中选择什么。User.roles应为所选数据
HTML:
你对angular的看法是什么 在angular 1.0.X中,angular检查项是否严格相等(因此角色必须是ng模型中的同一实例和数组中的选定项) 如果您使用的是angular(1.2.x)的最新版本,则可以在ng选项中使用“跟踪方式”:
<select
ng-options="role.name for role in roles track by role.name"
ng-model="user.roles"
multiple>
</select>
看这把小提琴:好的,我找到了解决办法。如果有人能提出更好的解决方案,请张贴出来 用于检查给定角色数组中是否存在角色的函数
$scope.isRoleContains = function(roles, roleToFind) {
var is = false;
angular.forEach(roles, function(role) {
if (role.name == roleToFind.name)
is = true;
});
return is;
}
更新的选择框
<select ng-model="user.roles" multiple="multiple">
<option ng-repeat="role in roles" ng-selected="isRoleContains(user.roles, role)">
{{ role.name }}
</option>
</select>
{{role.name}
hi,将其加入到混合物中:
演示:
键是ng选项的设置(声明键值是什么)
对不起,这看起来像是标准答案,我没有找到我问题的答案
$scope.isRoleContains = function(roles, roleToFind) {
var is = false;
angular.forEach(roles, function(role) {
if (role.name == roleToFind.name)
is = true;
});
return is;
}
<select ng-model="user.roles" multiple="multiple">
<option ng-repeat="role in roles" ng-selected="isRoleContains(user.roles, role)">
{{ role.name }}
</option>
</select>
<select
multiple="multiple"
ng-options="obj.name as obj.name for obj in roles"
ng-model="user.roles">
</select>