如何通过表达式显示数组元素

时间:2016-05-27 13:57:42

标签: javascript arrays angularjs

我正在使用AngularJS,在我的控制器中我有一些数组,例如:

$scope.users[] = {
  id: 0,
  name: "John",
  surname: "Doe"  
};

$scope.cars[] = {
  id: 0,
  userid: 0,
  color: "blue"
};

然后在视图中,我想显示一些数据,例如:

<div class="...">{{ cars[0].color }}</div>

这个工作正常。但现在,我想显示用户名where cars.userid = users.id。我试过这样的事情:

<div class="...">{{ users.name | filter: {users.id:cars.userid} }}</div>

但它当然会引发错误。我不确定,如果我可以这样使用过滤器,或者我必须将自己的函数写入控制器,它返回正确的用户名,如:

$scope.showUserName = function(id) {
  for(var i = 0; i < $scope.users.length; i++) {
    if(id == $scope.users[i].id) {
      return $scope.users[i].name;
    }
  }
}

然后在我看来:

<div class="...">{{ showUserName(cars.userid) }}</div>

感谢您的解释。

1 个答案:

答案 0 :(得分:1)

简单。

首先,像这样定义您的过滤器

app.filter('carUser', function() {  //register the filter
    return function(carId, users) { //first arg = input, subsequent argument = others
        for(var key in users)
            if(users[key].id === carId)
                return users[key].name;
    }
});

<强> HTML

<!-- users come from $scope.users -->
<div>The user of {{ cars[0].name }} is {{ cars[0].userId | carUser:users }}</div>