当您知道AngularJS中的键时显示值

时间:2015-06-24 18:36:32

标签: arrays json angularjs

我有变量:

$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>

2 个答案:

答案 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)}}