Как применить директиву Angularjs только в том случае, если применяется конкретный фильтр?

Я монтирую ретро-углы в существующий проект, где выход даты находится в нежелательном формате. (2013/01/01)

Я хотел бы использовать фильтр даты AngularJs для форматирования дат. К сожалению, текущие строки даты не являются стандартным форматом ISO, и я не могу их изменить.

Поэтому я решил, что лучший способ - применить новый фильтр до стандартной даты, чтобы проанализировать дату.

ng-bind="prop.ApplicationDate | DateParse | date:fullDate"

angular.module('rjDateParse', [])
.filter('DateParse', function() {
 return function(date) {
 var parsedDate;
 try {
 parsedDate = Date.parse(date);
 } catch (err){
 parsedDate = date;
 }
 return parsedDate;
 }
})

Это прекрасно работает.

Кроме того, я знаю о проблемах, которые я буду иметь с определенными датами в этом формате.Например, 2013/12/01 может вернуться с двумя совершенно разными датами.

Поэтому я хотел создать директиву, позволяющую щелкнуть дату, чтобы переключиться между оригиналом и обработанной датой.

Моя проблема: как применить эту директиву ТОЛЬКО, если фильтр был использован. Я не хочу, чтобы добавить элемент или атрибут в элемент вручную, чтобы вызвать это.

angular.module('rjDateParse', [])
.filter('DateParse', function() {
 return function(date) {
 var parsedDate;
 try {
 parsedDate = Date.parse(date);
 } catch (err){
 parsedDate = date;
 }
 return parsedDate;
 }
})
.directive('DateParse', function() {
 return {
 //apply this only if dateparse filer is applied
 }
});

заранее спасибо

обкрадывать

ps У меня нет контроллеров в настоящее время - я пытаюсь сохранить это так :)

1 ответ

Вы можете изменить формат углового фильтра "дата" простым способом:

{{prop.dateToFormat | date:'yyyy-MM-dd'}}

Этот код форматирует дату в стандартном формате ISO

licensed under cc by-sa 3.0 with attribution.