Jul*_*ues 35 javascript angularjs angularjs-service
我想知道是否有办法在AngularJs中的服务中注入过滤器.
我一直在努力
app.factory('educationService', [function($rootScope, $filter) {
// ..... Some code
// What I want
console.log(dateFilter(new Date(), 'yyyy-MM-01'));
// ..... Some code
}]);
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否可以在服务中注入过滤器,或者可以通过其他方式访问它.
如果你有关于这一点的文档的链接,那将是非常好的:)一直在Angular的文档中搜索,我发现没有什么真正有用的.
谢谢 :)
Ste*_*wie 55
首先,您必须像这样注入过滤器:
app.factory('myService', ['$rootScope', '$filter', function($rootScope, $filter)
Run Code Online (Sandbox Code Playgroud)
(只有在构建过程中使用缩小时才需要该数组)
以编程方式调用特定过滤器:
$filter('date')(new Date(), 'yyyy-MM-01');
Run Code Online (Sandbox Code Playgroud)
$filter(name)返回特定的过滤器函数,您可以使用您的参数调用它:
var dateFilter = $filter('date');
var filteredDate = dateFilter(new Date(), 'yyyy-MM-01')
Run Code Online (Sandbox Code Playgroud)
Mar*_*cok 46
过滤器功能是
$injector在过滤器名称后面注册的Filter.- $ filterProvider docs
对于Angular内置过滤器以及您自己的自定义过滤器,情况都是如此.
所以,你可以dateFilter像这样注入你的服务(如果没有缩小):
app.factory('educationService', [function($rootScope, dateFilter) {
Run Code Online (Sandbox Code Playgroud)
如果您只使用一个过滤器,则此方法允许您更具体地了解实际依赖项.如果你需要使用多个过滤器,你可以$filter像@Stewie节目一样注入.