Использование Moment.js в контроллере Ember внутри вычисляемой функции с использованием столбцов таблицы данных

#date #ember.js #datatable #momentjs #ember-cli

#Дата #ember.js #поддающийся обработке данными #momentjs #ember-cli #datatable

Вопрос:

Мне было интересно, можно ли применить формат даты MM-DD-YYYY к valuePath массиву столбцов таблицы данных в контроллере для маршрута Ember.

Мой controller.js :

 columns: computed(function() {
    return A([{
            valuePath: 'firstName',
            label: get(this, 'i18n').t('page.firstName'),
            cellClassNames: 'cell-valign-middle',
            sortable: true,
        }, {
            valuePath: "lastName",
            label: get(this, 'i18n').t('page.lastName'),
            cellClassNames: 'cell-valign-middle',
            sortable: true,
        }, {
            valuePath: "dateOfBirth",
            label: get(this, 'i18n').t('page.dateOfBirth'),
            cellClassNames: 'cell-valign-middle',
            sortable: false,
        },
    ]);
}),
  

template.hbs

 {{#data-table 
  columns=columns 
  models=model 
  sort=sort 
  isLoading=isLoadingModels 
  responsive=true}}
{{/data-table}}
  

Моя цель — перейти valuePath dateOfBirth к MMDDYYYY использованию формата даты moment.js .

Я пытался moment("dateOfBirth").format("MMDDYYYY") , но безуспешно.

Ответ №1:

В идеале в конфигурации каждого столбца должен быть атрибут ‘format’, чтобы вы могли определить метод форматирования.

Другой метод заключается в том, что, поскольку таблица запрашивает у модели атрибут ‘valuePath’, вы можете вычислить непосредственно в модели, чтобы вернуть форматированную дату.

models/user.js

  formatted: Ember.computed('dateOfBirth', function () {
    const dateOfBirth = this.get('dateOfBirth');
    return moment(dateOfBirth).format('MMDDYYYY')
  })
  

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

Комментарии:

1. Это сработало! Большое вам спасибо, теперь я могу использовать это для создания большего количества вычисляемых переменных, которые требуют чего-то похожего на этот подход. Действительно ценю быструю помощь.