在我看来,这应该是非常明显的,但我在任何地方都没有找到一个例子。
我有两个模型,会话和用户:
$scope.sessions =
[{
"sessionId":"1",
"userId":"12345",
"date": "17/07/2014",
"test_name":"2014beta",
"status": "new",
"assigned_to":""
}]
$scope.users =
[{
"userId":"12345",
"name":"Frank Tester",
"dob": "17/07/1967",
"eyes":"blue"
}]
会话属于用户,因此在数据库中,用户ID保存在会话模型中(上面的过度简化模型)。
在会话列表中,我想要包含用户名和其他用户详细信息,这两者都可以通过用户模型访问。
我在范围内同时提供了用户和会话。我使用ng-repeat列出所有会话(并显示session.name
,session.time
等内容),如何通过它的ID访问其他模型的用户名?即。我认为我应该可以访问session.user.name
我需要在几个不同的地方执行此操作,并且需要访问不同位的交叉引用数据 - 是否有一种简单的方法可以在模板中执行此操作,还是需要构建服务为了这?指令?过滤器?
答案 0 :(得分:0)
您可以在会话ng-repeat中添加另一个ng-repeat,并通过session.userId
对其进行过滤请参阅演示:http://plnkr.co/edit/BOITOEEYDM9tFH3zbMIW
<body ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<ul>
<li ng-repeat="session in sessions">
{{session.date}}
<ul>
<li ng-repeat="user in users | filter: session.userId ">
{{user.name}}
</li>
</ul>
</li>
</ul>
</body>
JS:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.sessions =
[{
"sessionId":"1",
"userId":"12345",
"date": "17/07/2014",
"test_name":"2014beta",
"status": "new",
"assigned_to":""
}]
$scope.users =
[{
"userId":"12345",
"name":"Frank Tester",
"dob": "17/07/1967",
"eyes":"blue"
}]
});