【问题标题】:AngularJS filter as selector from arrayAngularJS过滤器作为数组中的选择器
【发布时间】:2017-03-09 11:10:53
【问题描述】:

我的范围中有两个数组:员工和汽车。每个员工都有一个 carId,它与汽车数组中的汽车相匹配。

员工长得像

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

汽车类

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

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

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

我不知道如何访问过滤器内的汽车数组。这甚至可能吗?或者我应该在装载后将汽车注入员工,然后只使用跟随?

{{ employee.car.color }}

【问题讨论】:

  • 你能提供你的问题的 JSFiddle 链接吗?
  • 我已经更新了你的 JSFiddle link。看一看。我没有使用过滤器而是调用函数并插入它的响应。
  • 它有效,谢谢。比过滤器容易一点,但不幸的是可重复使用性较差。

标签: javascript angularjs angularjs-filter


【解决方案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

【讨论】:

  • 如何访问 $scope.有没有注射的可能?
猜你喜欢
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 2015-10-26
  • 2019-02-17
相关资源
最近更新 更多