Форматирование даты из шаблона Handlebars в Meteor
Я получил дату в формате ISO из моих данных, и что я действительно хочу сделать, это изменить формат даты непосредственно из моих шаблонов.
такой:
{{format my.context.date "myFormat"}}
Я использую библиотеку moment, поэтому я мог бы написать что-то вроде этого:
{{formatDate my.context.date "DD.MM.YYYY HH:mm"}} // 03.09.2013 18:12
было бы неплохо, потому что я думаю, что это то место, где я должен быть в состоянии сделать это. В моем шаблоне.
1 ответов
решение довольно простое, и, возможно, кто-то найдет его полезным. В большинстве проектов есть несколько форматов даты, которые вы хотите использовать. Таким образом, это хороший подход для определения ваших форматов с читаемыми именами.
для этого примера я взял только "короткий" и "длинный", но вы увидите, что его очень легко расширить.
поэтому я создал объект в своем клиентском скрипте:
var DateFormats = {
short: "DD MMMM - YYYY",
long: "dddd DD.MM.YYYY HH:mm"
};
кроме того, я создал помощник руля "formatDate".
редактировать: теперь вы следует использовать UI вместо руля
// Deprecated since version 0.8.0
Handlebars.registerHelper("formatDate", function(datetime, format) {
// Use UI.registerHelper..
UI.registerHelper("formatDate", function(datetime, format) {
if (moment) {
// can use other formats like 'lll' too
format = DateFormats[format] || format;
return moment(datetime).format(format);
}
else {
return datetime;
}
});
как вы можете видеть, я использую данный момент.js lib в моем помощнике. Чтобы установить его, просто введите meteor add momentjs:moment
из командной строки.
и теперь, везде в моих шаблонах я могу использовать его с двумя параметрами, например:
{{formatDate MyISOString "short"}} // 02 September - 2013
{{formatDate MyISOString "long"}} // Monday 02.09.2013 18:00
если вы хотите создать свои собственные форматы, взгляните на momentjs docs http://momentjs.com/docs/
удачи в кодировании!