Если вас интересует только отображение данных, то, как уже упоминалось в pkozlowski.opensource, фильтры — это «угловой способ» форматирования данных для отображения. Если существующего фильтра дат недостаточно, я предлагаю собственный фильтр. Тогда ваш HTML будет выглядеть более «угловатым»:
<span class="posted-date">Posted {{CreatedDate | dateFormatter}}</span>
Приведенный выше синтаксис дает понять, что вы (только) форматируете.
Вот пользовательский фильтр:
angular.module('OurFormatters', []).
filter('dateFormatter', function() { // filter is a factory function
return function(unformattedDate, emptyStrText) { // first arg is the input, rest are filter params
// ... add date parsing and formatting code here ...
if(formattedDate === "" && emptyStrText) {
formattedDate = emptyStrText;
}
return formattedDate;
}
});
Инкапсулируя наши фильтры/форматеры в модуль, их также проще (повторно) использовать в нескольких контроллерах — каждый контроллер, который в них нуждается, просто внедряет OurFormatters.
Еще одним преимуществом фильтров является то, что они могут быть объединены в цепочку. Поэтому, если когда-нибудь вы решите, что в некоторых местах вашего приложения пустые даты не должны ничего показывать (быть пустыми), тогда как в других местах вашего приложения пустые даты должны показывать «TBD», фильтр может решить последнее:
<span class="posted-date">Posted {{CreatedDate | dateFormatter | tbdIfEmpty}}</span>
Или ваш пользовательский фильтр может принимать один или несколько аргументов (приведенный выше пример поддерживает аргумент):
<span class="posted-date">Posted {{CreatedDate | dateFormatter:'TBD'}}</span>
person
Mark Rajcok
schedule
18.09.2012