Подтвердить что ты не робот

Отформатируйте дату изнутри шаблона Handlebars в Meteor

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

вот так:

{{format my.context.date "myFormat"}}

Я использую библиотеку моментов, поэтому я мог бы написать что-то вроде этого:

{{formatDate my.context.date "DD.MM.YYYY HH:mm"}} // 03.09.2013 18:12

Было бы хорошо, потому что я считаю это местом, где я должен это сделать. В моем шаблоне.

4b9b3361

Ответ 1

Решение довольно простое, и, возможно, кто-то найдет его полезным. В большинстве проектов у вас есть несколько форматов даты, которые вы хотите использовать. Таким образом, это хороший подход для определения ваших форматов с читаемыми именами.

В этом примере я взял "короткий" и "длинный", но вы увидите, что его очень легко расширить.

Итак, я создал объект в моем клиенте Script:

var DateFormats = {
       short: "DD MMMM - YYYY",
       long: "dddd DD.MM.YYYY HH:mm"
};

Кроме того, я создал Handlebars Helper "formatDate".

Отредактировано: теперь вы должны использовать пользовательский интерфейс вместо Handlebars

// 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;
  }
});

Как вы можете видеть, я использую moment.js lib в моем помощнике. Чтобы установить его, просто введите meteor add momentjs:moment из командной строки.

И теперь, везде в моих шаблонах я могу использовать его с двумя параметрами, например:

{{formatDate MyISOString "short"}} // 02 September - 2013
{{formatDate MyISOString "long"}} //  Monday 02.09.2013 18:00

Если вы хотите создать свои собственные форматы, посмотрите на Actionsjs docs http://momentjs.com/docs/

Счастливое кодирование!

Ответ 2

спасибо - это отлично сработало для меня. Я использовал npm и мне нужно было указать момент: все: переменная момент = требуется ('момент')