AngularJS过滤器根据迭代中的值显示DB的另一个值

时间:2014-09-30 21:02:34

标签: javascript angularjs

我正在将纯Laravel(和jQuery)应用程序转换为Angular / Laravel。

我有这个片段:

<td>{{ Person::byId($record->id) }}</td>

在我的迭代中,我调用了一个函数来根据迭代中的id获取名称。我知道我需要使用过滤器在Angular中执行此操作。

如果我设置了API端点来接收ID并使用名称进行响应,那么如何设置下面的表以使用该过滤器?

<tr ng-repeat="record in records">
    <td>{{record.id | filter to show name}}</td>
</tr>

2 个答案:

答案 0 :(得分:0)

您可以从:

开始
angular.module('myModule', []).filter('name', function() {
  return function(input) {
     //function/call a service to get the name based on record.id which is the input
     return name;
  };
});

然后在你看来:

<tr ng-repeat="record in records">
    <td>{{record.id | name}}</td>
</tr>

请注意,如果您的数据库上有几条记录,那么它可能会被循环请求所淹没。

答案 1 :(得分:0)

这一切都没有Angular,尽管它被标记为Angular问题。它可以在服务器端或客户端完成,但我在服务器端完成,因为它更容易这样做。

这是我的Laravel查询:

$records = DB::table('records')->get();

获得此stdClass array后,我迭代它并使用外部静态方法返回基于id的名称。

示例:

foreach($records as $record) {
    $record->id = Person::byId($record->id);
}

然后我使用上面修改过的数据在我的API端点中使用JSON进行响应。