如何在angular指令的link函数中传递$ filter

时间:2015-11-03 11:42:27

标签: angularjs angularjs-directive angularjs-filter

我需要在angular指令的link函数中使用$ filter,但是没有办法将$ filter作为参数传递给链接函数。

app.directive('myDirective', function($compile) {
  return {
    restrict: 'A',
    scope: {
      ngModel: '=',
    },
    require: 'ngModel',
    link: function($scope, elem, attr, ctrl) {

    }
  };
});

http://plnkr.co/edit/XpnY5dq7rnl2sWXlsN4t?p=preview

如何访问$ filter里面的链接功能?

2 个答案:

答案 0 :(得分:11)

将它注入实际的指令函数,然后可以在整个指令中使用它(包括你的链接函数)。

app.directive('myDirective', function($compile, $filter){
    return {
        restrict: 'A',
        scope: {
            ngModel: '=',
        },
        require: 'ngModel',
        link: function($scope, elem, attr, ctrl) {
            // call $filter here as you wish

        }
    };
});

只需将链接函数视为私有指令函数,它不直接处理角度的注入系统。通过注入主指令函数,你基本上就是说所有内部函数都可以使用它。

答案 1 :(得分:4)

您需要注入$filter依赖项,所有自定义服务/工厂和内置角度提供程序($ timeout,$ filter)都应该按以下方式注入

  app.directive('myDirective', ['$compile','$filter',function($compile,$filter) {
  return {
    restrict: 'A',
    scope: {
      ngModel: '=',
    },
    require: 'ngModel',
    link: function($scope, elem, attr, ctrl) {
      console.log($filter);
    }
  };
}]);

http://plnkr.co/edit/JUE1F83l1BC0LTlO7cxJ?p=preview