将过滤器作为角度指令参数传递

mrz*_*asa 1 angularjs angularjs-directive angular-filters

我想将w filter作为param传递给我的app中的自定义指令.我想做的事情如下:

申请中的用法:

<my-directive data='dataVariable' dataFilter='numericFilter: 123'/>
Run Code Online (Sandbox Code Playgroud)

指令模板:

<span> {{ data | dataFilter }} </span>
Run Code Online (Sandbox Code Playgroud)

指示:

...
scope: {
  data: '=',
  dataFilter: '@'
}
...
Run Code Online (Sandbox Code Playgroud)

当我做上面的shwon时,我得到与语法有关的错误(:无法识别),依赖注入(找不到过滤器)或过滤器什么都不做.

Pin*_*niH 6

您可以使用过滤器服务动态获取所需的过滤器:

angular.module('app').directive('myDir', ['$filter', function($filter) { 
....
     link: function($scope, $el, $attr) {
          var desiredFilter = $filter($attr['dataFilter']);
         //desiredFilter is now a function that will run the filter passed, it will throw exception if filter is not found
      }
 }
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.