我正在学习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 :(得分:0)
通常会创建过滤器以用于模板(HTML)。例如:
<p>{{somethingOnScope | myFilter}}</p>
您可以通过注入$filter
在JS文件中使用它们,然后获取对您的过滤器的引用,如:$filter('myFilter');
您可以在过滤器文档中看到用法示例:
https://docs.angularjs.org/api/ng/filter/filter
您在何处以及如何准确注册过滤器是一种风格问题。我个人试着遵循john papa的建议,每个文件只创建一个注射项目。
另一方面,我更倾向于尽量减少使用过滤器,尤其是自定义过滤器。如果你想主要在你的JS中使用它们,服务/工厂对我来说感觉更干净,如果你想创建一个用于你的模板,通常你可以改变之前把它放在范围。