Инъекция dateFilter в службе в AngularJs
Я хотел бы знать, есть ли способ внедрить фильтры в службу в AngularJs.
Я пытался
app.factory('educationService', [function($rootScope, $filter) {
// ..... Some code
// What I want
console.log(dateFilter(new Date(), 'yyyy-MM-01'));
// ..... Some code
}]);
Итак, я хотел бы знать, можно ли вводить фильтр в службу или, возможно, он доступен другим способом.
И если у вас есть ссылка на документацию по этому вопросу, было бы очень приятно:) Был поиск в документе Angular, и я не нашел в этом ничего полезного.
Спасибо:)
Ответы
Ответ 1
Сначала вам нужно вставить фильтр следующим образом:
app.factory('myService', ['$rootScope', '$filter', function($rootScope, $filter)
(Массив нужен только тогда, когда вы используете минимизацию в процессе сборки)
Программный вызов специального фильтра:
$filter('date')(new Date(), 'yyyy-MM-01');
$filter(name)
возвращает определенную функцию фильтра, которую вы можете вызвать с помощью своих аргументов:
var dateFilter = $filter('date');
var filteredDate = dateFilter(new Date(), 'yyyy-MM-01')
Ответ 2
Функция фильтра регистрируется с помощью $injector
под именем фильтра, помеченным Filter
. - $filterProvider docs
Это верно для встроенных фильтров Angular, а также для собственных пользовательских фильтров.
Итак, вы можете ввести dateFilter
в свою службу, как это (если не уменьшить):
app.factory('educationService', [function($rootScope, dateFilter) {
Если вы используете только один фильтр, этот метод позволяет более точно определять ваши фактические зависимости. Если вам нужно использовать несколько фильтров, вы можете добавить $filter
, как показано на странице @Stewie.