2014-09-19 2 views
0

Я немного застреваю, пытаясь создать фильтр, который можно использовать как в ng-repeat, так и в контроллере.с использованием фильтра компаратора в списке фильтра

Я создал несколько контроллеров фильтров формы

$scope.myfilter = function($item){ 
    if($item == "blah"){ 
     return true; 
    } 
    return false; 
} 

но обнаружил те, которые вы прикрепляются к модулю, который принимает списки вместо этого.

angular.module('filters',[]) 
filter(function(){ 
    return function(list){ 
     //filter code goes here. 
    } 
}); 

Очевидно, что он может запускать версии компаратора в списках, поскольку он делает это для ng-повторов. Есть ли простой способ запуска фильтров компаратора внутри списка? Я немного смущен, когда вы будете использовать один над другим?

+0

Если я понял правильно, вы хотите знать разницу между фильтрации данных в сценарии и фильтрации внутри нг-повтора. Если это так - это зависит, если у вас есть большой объем данных - возможно, лучше их отфильтровать перед вставкой в ​​'ng-repeat',' var result = array.filter (function (obj) {return obj == 'someval' }) 'может помочь, но если у вас небольшие данные, то на самом деле это не имеет значения. –

+0

Нет, что я хочу, это один фильтр, который можно использовать в обоих местах. Похоже, что есть слишком похожие методы фильтрации. Поэтому я выясняю, нужно ли мне переписать код, который у меня уже есть. – drawde83

ответ

0

Pplease посмотреть здесь http://jsbin.com/wajecu/2/edit

более документации вы можете найти здесь https://docs.angularjs.org/tutorial/step_09

фильтр:

app.filter('myfilter', function() { 
     return function(input) { 
      var filtered = []; 

      angular.forEach(input, function (value){ 
      if(value == "blah"){ filtered.push(value); } 

      }); 
      return filtered; 

     }; 
    }); 

Контроллер:

app.controller('firstCtrl', function($scope,$filter){  

     $scope.items = ["blah", "ech", "mech"]; 
     //you can use your filter inside controller in that way: 
     $scope.filtered= $filter('myfilter')($scope.items); 

}); 

HTML:

<p ng-repeat="item in items | myfilter ">{{item}}</p> 
Смежные вопросы