0

我有一個過濾器,我需要使用兩次(兩頁/控制器),過濾對象類別。我能得到這個在每個控制器中使用這個工作:AngularJS過濾器最佳實踐

 $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); 
     } 
    }); 

您可以看見我試圖讓該類別的選擇也是如此。我如何進入範圍並獲得類別?我應該使用服務,並在其中一個按鈕點擊設置類別過濾?

我還在學習的過濾器和什麼希望確保它的可重複使用的,並遵循最佳實踐

回答

1

傳遞對象的過濾表達式:filter:{category: '...', compareTo: '...'},並檢查過濾器函數內。