Je voudrais savoir s'il existe un moyen d'injecter les filtres dans un service dans AngularJs.
J'ai essayé
app.factory('educationService', [function($rootScope, $filter) {
// ..... Some code
// What I want
console.log(dateFilter(new Date(), 'yyyy-MM-01'));
// ..... Some code
}]);
Je voudrais donc savoir s'il est possible d'injecter un filtre dans un service ou peut-être qu'il est accessible d'une autre manière.
Et si vous avez un lien vers une documentation sur ce point, ce serait vraiment sympa :) J'ai cherché dans le doc de Angular et je n'ai rien trouvé de vraiment utile à ce sujet.
Merci :)
Vous devez d'abord injecter le filtre comme ceci:
app.factory('myService', ['$rootScope', '$filter', function($rootScope, $filter)
(Le tableau n'est nécessaire que lorsque vous utilisez la minification dans votre processus de construction)
Pour appeler un filtre spécifique par programme:
$filter('date')(new Date(), 'yyyy-MM-01');
$filter(name)
renvoie la fonction de filtre spécifique, que vous pouvez ensuite appeler avec vos arguments:
var dateFilter = $filter('date');
var filteredDate = dateFilter(new Date(), 'yyyy-MM-01')
La fonction de filtrage est enregistrée avec le
$injector
sous le nom du filtre suffixé deFilter
. - $ filterProvider docs
Cela est vrai pour les filtres intégrés Angular, ainsi que pour vos propres filtres personnalisés.
Ainsi, vous pouvez injecter le dateFilter
dans votre service comme ceci (si ce n'est pas en minifiant):
app.factory('educationService', [function($rootScope, dateFilter) {
Si vous n'utilisez qu'un seul filtre, cette méthode vous permet d'être plus précis sur vos dépendances réelles. Si vous devez utiliser plusieurs filtres, vous pouvez injecter $filter
comme le montre @Stewie.