我有两个表:
id
,client_id
,name
。id
,name
。使用Angular 1.5,我要遍历所有工作:
controller('JobsController', ['$scope', 'Job', 'Client', function($scope, Job, Client) {
$scope.jobs = Job.query();
$scope.clients = Client.query();
}]);
HTML:
<tr ng-repeat="job in jobs">
<td>
{{clients[job.client_id].name}}
</td>
<td>
{{job.name}}
</td>
</tr>
在HTML中,第一列应为客户端名称。实际上,这是行不通的,因为$scope.clients
是一个看起来有点像这样的对象数组:
[{'id':4, 'name':'test_name'}, {'id':7, 'name':'another client'}]
在我的循环中,有没有办法从这个clients
数组中进行选择?id
ng-repeat
$scope.jobs
好像:
[{'id':100, 'client_id': 4, 'name': 'a job'}, ...]
首先,在服务器端进行连接可能会更容易,您$scope.jobs
可能会更喜欢:
[
{
'id': 100,
'name': 'a job',
'client': {
'id': 4
'name': 'test_name'
}
}
...
]
如果您需要在前端执行此操作,我要做的是向您的控制器添加一种方法来获取指定作业的客户端。像这样的东西:
$scope.getClientName = function(job) {
//to prevent errors if $scope.clients is not loaded yet
if (!$scope.clients) {
return;
}
for (var c = 0; c < $scope.clients.length; c++) {
var client = $scope.clients[c];
if (client.id = job.client_id) {
return client.name;
}
}
}
然后,而不是{{clients[job.client_id].name}}
调用您的函数并传递job
:
{{getClientName(job)}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句