2017-01-23 6 views
0

Если имя фильтра является статическим, вы можете просто вводить имя фильтра с «Фильтр», приложенном к нему в функции контроллера вашего компонента, например:angularjs компонент динамический фильтр

angular.module('ngApp').component('myComponent', { 
    bindings: { 
     dynamicFilter: '@' 
    }, 
    controller: [ 
     'staticFilterFilter', 
     function(staticFilterFilter) { 
      this.valueSetByStaticFilter = staticFilterFilter('x'); 
     }] 
}); 

Есть способ передать имя фильтра в компонент angularjs версии 1.6, связанный как строка аргумента/атрибута, используя '@', и затем получить этот фильтр по имени и использовать его внутри контроллера этого компонента?

ответ

0

Внесите $filter service в контроллер компонента. Затем можно извлечь и использовать фильтр, делая что-то вроде этого:

var filtered = $filter('yourFilterName')(arg1,arg2); 

Так что в вашем изменении кода, чтобы это что-то вроде:

angular.module('ngApp').component('myComponent', { 
    bindings: { 
     dynamicFilter: '@' 
    }, 
    controller: [ 
     '$filter', 
     function($filter) { 
      var filtered = $filter(this.dynamicFilter)(arg1,arg2); 
     } 
    ] 
}); 
+1

Спасибо, я пытался что-то подобное раньше и получаю сообщение об ошибке , Но это действительно работает для меня, спасибо. – bkinsey808

+0

Хороший материал! Приятно, что это помогло. –

Смежные вопросы