【问题标题】:AngularJS Filter Best PracticeAngularJS 过滤器最佳实践
【发布时间】:2015-11-16 14:34:17
【问题描述】:

我有一个过滤器需要使用两次(两个页面/控制器),过滤一个对象类别。我可以在每个控制器中使用它来实现它:

     $scope.$on('category', function (event, arg) {
                $scope.catSort = arg;
            });    

     $scope.filterCat = function (item) {
                return !$scope.catSort ?
                    item : (item.category == $scope.catSort);
            };

我正在过滤的 html:

 <li dnd-draggable="item" ng-repeat="item in items| filter: filterCat">
        </li>

我在用户可以点击的按钮列表中设置了 $scope.catSort 过滤器:

<button class="btn btn-default" ng-click="$emit('category', 'all')">Show All</button>
<button class="btn btn-default" ng-click="$emit('category', 'Common')">Common</button>

问题是,我有另一个 html 页面,其中包含我需要过滤的不同类别子集。我想创建一个单独的过滤器来注入每个控制器,而不是仅仅复制和粘贴 $scope.filterCat 函数来再次过滤(这是最佳实践吗?)。

所以我开始的是这个单独的过滤器:

angular.module("category-filter", [])
    .filter('filterCat', function () {
        return function (category, item) {
            return !category ?
                product : (item.category == $scope.catSort);
        }
    });

您可以看到我也在尝试获取该类别选项。我如何进入范围并获得类别?我应该使用服务并在其中一个按钮单击上设置要过滤的类别吗?

我仍在学习过滤器以及如何确保其可重复使用并遵循最佳实践

【问题讨论】:

    标签: javascript angularjs filter angularjs-ng-repeat angularjs-filter


    【解决方案1】:

    将对象传递给过滤器表达式:filter:{category: '...', compareTo: '...'} 并在过滤器函数中检查它。

    【讨论】:

      猜你喜欢
      • 2019-11-30
      • 1970-01-01
      • 2014-05-23
      • 2013-02-04
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多