javascript - AngularJS 过滤器作为数组中的选择器

标签 javascript angularjs angularjs-filter

我的范围内有两个数组:员工和汽车。每个员工都有一个 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/

相关文章:

javascript - jquery keyup 显示/隐藏退格时保持显示

javascript - 如何在内存中写入文件或在 Lambda aws 中写入文件?

javascript - 在解构括号内赋值?

javascript - 下拉值不与关联数组绑定(bind)

javascript - 带有自定义过滤器的 Angularjs ng-bind-html

javascript - 使用 Three.js 在 3D 对象上绘制轮廓

javascript - ng-click 不适用于动态创建的内容

javascript - 如何连接或合并两个数组

angularjs - Angular JS,过滤时记住复选框状态

javascript - Angularjs 具有 ng 重复的多重动态过滤器