【发布时间】:2014-08-20 15:49:09
【问题描述】:
我有两个对象数组。一个数组是权限组对象列表,另一个是用户组列表。我试图弄清楚如何将组所有者(即 70)与匹配 ID 的用户列表进行比较。
Groups 数组 (ReportModel.report) 的结构如下:
[{
name: Admin,
id: 71,
description: Important Group,
owner: 70,
ownerIsUser: True
}]
用户数组(ReportModel.users)的结构如下:
[{
name: All Users (windows),
id: 70,
domain: c:0!.s|windows,
email: ,
isAdmin: False
}]
使用组对象数组,我在表格中显示所有组。
HTML:
<tr ng-repeat="group in ReportModel.report" on-finish-render
<td>{{group.id}}</td>
<td>{{group.description}}</td>
<td>{{group.owner}}</td>
<td><td>{{getOwner(group.owner)}}</td></td> //I'm trying to get this cell to display "All Users (windows)"
<td>{{group.ownerIsUser}}</td>
</tr>
我找到了一个函数,它执行 ID 查找并返回正确的用户对象,我可以从中提取名称,但我不知道如何在 ng-repeat 中的视图中调用此函数并返回正确的名字
这是我的controller:
function loadUsers(){
UserService.loadUsers().then(function (data){
console.log('getting users');
$scope.ReportModel.users = data; })
}
function findById (source, id) {
return source.filter(function( obj ) {
// coerce both obj.id and id to numbers
// for val & type comparison
return +obj.id === +id;
})[ 0 ];
}
$scope.getOwner = function (ownerID) {
console.log('get owner called', ownerID);
var owner = findById($scope.ReportModel.users, ownerID);
console.log(owner.name);
return owner.name;
}
【问题讨论】:
-
你可以直接调用那个函数
<td>{{getUsers(group.owner)}}</td> -
我试过你的建议,但我得到一个插值错误jsfiddle.net/uyy0kfjp
-
@PSL 您的解决方案对我有用。我只需要确保在运行 ng-repeat 之前填充了所有用户。所以这是一个时间问题。谢谢你的帮助。如果您将其作为答案提交,我可以将其作为解决方案。谢谢。
-
肯定添加为答案。谢谢
标签: javascript html arrays angularjs angularjs-ng-repeat