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

Angularjs 将过滤器作为角度指令参数传递,angularjs,angularjs-directive,angular-filters,Angularjs,Angularjs Directive,Angular Filters,我想在我的应用程序中将w filter作为参数传递给自定义指令。我想做一些类似的事情: 应用中的用法: <my-directive data='dataVariable' dataFilter='numericFilter: 123'/> 当我按照上面的shwon操作时,会出现与语法相关的错误:未识别,未找到依赖项注入筛选器,或者筛选器什么也不做。您可以使用筛选器服务动态获取所需的筛选器: angular.module('app').directive('myDir', ['$fi

我想在我的应用程序中将w filter作为参数传递给自定义指令。我想做一些类似的事情:

应用中的用法:

<my-directive data='dataVariable' dataFilter='numericFilter: 123'/>

当我按照上面的shwon操作时,会出现与语法相关的错误:未识别,未找到依赖项注入筛选器,或者筛选器什么也不做。

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

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
      }
 }

我希望这有帮助。

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

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
      }
 }

我希望这会有所帮助。

您可以根据属性在编译函数中构建表达式。 但是,我建议使用@PinhasHouri建议的$filter


可以根据属性在编译函数中构建表达式。 但是,我建议使用@PinhasHouri建议的$filter

您的dataFilter属性应该是data filter。dataFilter属性在指令中是如何工作的?显示指令代码中未使用my directivedataFilter的内容。只需要格式化HTML输出。您的dataFilter属性应该是data filter。dataFilter属性在指令中是如何工作的?显示指令代码中未使用my directivedataFilter的内容。它只需要格式化HTML输出。
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
      }
 }
<!DOCTYPE html>
<html>

  <head>
    <script data-require="angular.js@*" data-semver="1.3.0" src="//code.angularjs.org/1.3.0/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <h1>Hello Plunker!</h1>
    <div apply-filter 
         filter-data="Hello" 
         filter-expr="append:'C'"></div>

    <script>
      var app  = angular.module("app",[]);

      app.directive("applyFilter",function(){
        return{
          filterExpr: "@",
          filterData: "@",
          compile: function(element,attrs){
            element.append("{{'" + attrs.filterData + "'|" +  attrs.filterExpr + "}}");
          }
        }
      });

      app.filter("append",function(){
        return function(v,p){
          return v + p;
        }
      });

      angular.bootstrap(document,["app"]);
    </script>
  </body>

</html>