AngularJs-использовать пользовательский фильтр внутри контроллера директивы
сценарий
У меня есть массив пользователей, содержащих информацию о них, я делаю ng-repeat
в сочетании с пользовательской директивой, которая генерирует HTML-карту пользователя, сохраняя область каждой карты относительно отдельного пользователя, внутри модели пользователя есть значение, которое мне нужно отфильтровать с помощью пользовательского фильтра, прежде чем шаблон будет скомпилирован, потому что если я сделаю это внутри шаблона время, необходимое для фильтрации, подсказка не будет отображаться, пока значение не будет готово и это выглядит так, как будто что-то не работает.
мой код до сих пор
// userCard directive
angular.module('userCard', []).directive('UserCard', function() {
return {
restrict: 'EA',
templateUrl: 'userCard.tpl.html',
scope: {
user: '='
},
controller: ['$scope', 'fromNowFilter', function($scope, fromNowFilter) {
angular.forEach($scope.user.reminders, function(reminder) {
reminder.last_sent = reminder.last_sent === null ? 'No reminder has been sent!' : fromNowFilter(reminder.last_sent);
});
}],
link: function(scope, element) {
// Add the base class to the user card element
element.addClass('user-card');
}
};
});
// fromNow custom filter
angular.module('userCard').filter('fromNow', function() {
return function(date) {
return moment(date).fromNow();
};
});
// The error I keep getting
Unknown provider: fromNowFilterProvider <- fromNowFilter
1 ответов
попробуйте inject filterprovider и запустить фильтр.
controller: ['$scope', '$filter', function($scope, $filter) {
var fromNowFilter = $filter('fromNow');
angular.forEach($scope.user.reminders, function(reminder) {
reminder.last_sent = reminder.last_sent === null ? 'No reminder has been sent!' : fromNowFilter(reminder.last_sent);
});
}],