我的范围内有两个数组:员工和汽车。每个员工都有一个 carId,与 cars 数组中的一辆车相匹配。
员工的样子
[{'id': 1, 'name': 'John', 'carId': 1}]
像汽车
[{'id': 1, 'color': 'red'}]
现在我有一个 ng-repeat 并想用过滤器直接输出汽车的颜色:
{{ employee.carId | selectFromCars:$scope.cars }}
我不知道如何访问过滤器内的汽车数组。这是否可能,或者我应该在装载后将汽车注入(inject)员工体内,然后使用以下内容?
{{ employee.car.color }}
最佳答案
您可以制作自己的自定义过滤器,然后将其添加到 Controller 的末尾,如下所示:
.filter('empCarFilter', function() {
return function(carId, cars) {
// you can access $scope.cars here, for example...
angular.forEach(cars,function(value){
if (value.id === carId) {
return value.color;
}
// etc...etc...
})
}
上述方法假设您将employee.carId 传递到过滤器中。但是,不确定这对您有多大用处,但您也可以将整个对象传递给过滤器,而不仅仅是一个键:
{{ employee | empCarFilter }}
这里还有一个关于自定义过滤器的非常好的引用: https://scotch.io/tutorials/building-custom-angularjs-filters
关于javascript - AngularJS 过滤器作为数组中的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42685009/