2016-01-05 131 views
0

我在学习Angular,需要创建一些自定义过滤器。在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) 

}()); 
+0

你能解释更多关于filters.js和factory.js 和功能吗? –

回答

0

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

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

您可以通过注入$filter,然后得到一个参考的过滤器就像在你的JS文件中使用它们:$filter('myFilter');

你可以看到过滤器文档中使用的例子:

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

您在哪里以及如何注册您的过滤器是一个风格问题。我个人尝试遵循约翰帕帕的建议,并为每个文件创建一个注射项目。

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

+0

我在一个名为filters的文件夹中创建了一个文件,并在我的index.html文件中引用了该文件。你在哪里获得对它的引用$ filter('myFilter')? – ottz0

+0

使用'$ filter'的说明位于该文档页面中。如果它太混乱了,比起回到AngularJS教程或者两个教程来回想起来还好吗?这里是另一个SO发布讨论在控制器中使用'$ filter'如果有帮助:http://stackoverflow.com/questions/14302267/how-to-use-a-filter-in-a-controller –