【发布时间】: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