我正在使用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>
感谢您的解释。
答案 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>