在Angular中创建自定义过滤器

时间:2016-01-05 03:25:36

标签: angularjs

我正在学习Angular,需要创建一些自定义过滤器。

我是否创建了一个filters.js文件并将我的所有过滤器放在那里,类似于我所有可重复使用的factory.js

例如:我有一个utilsFactory.js,我在这里放了可重复使用的功能。

这会被注入控制器吗?或者这是在$rootscope某处加载的?

我见过很多关于如何创建它们的例子,但没有看到如何存储和管理它们以及如何正确地访问它们

filter.js

angular.module('achApp', [])
.filter('myUpperCase', function(){
    return function(value){
        return String(value).toUpperCase();
    }
});

控制器

(function(){

    var DevbController = function($scope, utilsFactory, $filter){
         $scope.greeting = 'hello';
    };

     DevbController.$inject = ['$scope', 'utilsFactory', '$filter'];

    angular.module('achApp')
       .controller('DevbController', DevbController)

}());

1 个答案:

答案 0 :(得分:0)

通常会创建过滤器以用于模板(HTML)。例如:

<p>{{somethingOnScope | myFilter}}</p>

您可以通过注入$filter在JS文件中使用它们,然后获取对您的过滤器的引用,如:$filter('myFilter');

您可以在过滤器文档中看到用法示例:

https://docs.angularjs.org/api/ng/filter/filter

您在何处以及如何准确注册过滤器是一种风格问题。我个人试着遵循john papa的建议,每个文件只创建一个注射项目。

另一方面,我更倾向于尽量减少使用过滤器,尤其是自定义过滤器。如果你想主要在你的JS中使用它们,服务/工厂对我来说感觉更干净,如果你想创建一个用于你的模板,通常你可以改变之前把它放在范围。

相关问题