AngularJS过滤器作为数组的选择器

时间:2017-03-09 01:25:25

标签: javascript angularjs angularjs-filter

我的范围内有两个阵列:员工和汽车。每个员工都有一个cardd,与汽车阵列中的汽车相匹配。

员工看起来像

[{'id': 1, 'name': 'John', 'carId': 1}]

像汽车

[{'id': 1, 'color': 'red'}]

现在我有一个ng-repeat,想直接用过滤器输出汽车的颜色:

{{ employee.carId | selectFromCars:$scope.cars }}

我不知道如何访问过滤器内的汽车阵列。这是否可能,或者我应该在装载后将汽车注入员工,然后只使用以下?

{{ employee.car.color }}

1 个答案:

答案 0 :(得分:1)

您可以制作自己的自定义过滤器,只需将其添加到控制器的末尾,如下所示:

.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