2017-01-23 108 views
0

如果過濾器的名稱是靜態的,你可以只用「過濾器」附加到你的組件的控制器功能注入過濾器的名稱,如:angularjs組件動態過濾器

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

有一種將過濾器名稱傳遞給angularjs版本1.6組件的方法,使用'@'作爲參數/屬性字符串進行綁定,然後能夠通過名稱獲取該過濾器並在該組件的控制器內部使用該過濾器?

回答

0

$filter service注入到組件的Controller中。然後,您可以檢索並通過做這樣的事情使用過濾器:那麼在你的代碼將其更改爲類似

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

好東西!高興它幫助。 –