在ng-repeat中使用外键

胶梨

我有两个表:

  1. 一个工作表3个字段:idclient_idname
  2. 一个客户表2个字段:idname

使用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数组中进行选择idng-repeat

$scope.jobs 好像:

[{'id':100, 'client_id': 4, 'name': 'a job'}, ...]

安德鲁·迈罗斯(Andrew Mairose)

首先,在服务器端进行连接可能会更容易,您$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章