我有变量:
$scope.rolesData = [{id : '1', name : 'user'}, {id : '2', name : 'superuser'},{id : '3', name : 'admin'}];
我从DB获得了一个具有整数值的用户对象,它告诉我角色是什么。它是1到3. user.userRole是1,2或3。
$scope.users = adminUserSvc.query(); //From DB
选择中的一切都很好:
<tr ng-repeat="user in users">
...
<select class="form-control" ng-model="user.userRole" ng-options="role.id as role.name for role in rolesData">
</select>
但我想知道如何在{{}}内显示相同内容?如果我知道user.userRole给我id 1,那么我将如何获得名称的值?
这是在ngRepeat:
中<div ng-hide="editingUsers[user.userId]">{{rolesDataSOMETHING??}}</div>
答案 0 :(得分:3)
好的,你可以用这个:
{{(rolesData | filter:{id:user.userRole})[0].name}}
首先它会过滤rolesData对象 - 然后使用[0]
获取第一个对象(由于过滤器,它应该只有一个)。
旧答案(旧问题):
你只需要保存正确的东西&#39;在您的模型中更改ng-options
!
ng-options="role as role.name for role in rolesData"
这会将整个角色对象{id : '1', name : 'user'}
保存在您的user.userRole
模型中,输出名称只需使用{{user.userRole.name}}
这里不需要ngRepeat。
答案 1 :(得分:0)
您可以使用lodash(http://lodash.com)查找您要查找的元素。你可能想把它放在控制器上的一个函数中。像
这样的东西$scope.getName = function(id) {
var i = _.findIndex($scope.rolesData, { id: id });
return $scope.rolesData[i].name;
}
然后在您的模板中,您可以在括号中引用它:
<div ng-hide="edingUsers[user.userId]">{{getName(user.userRole)}}