У меня есть класс js, Пользователь, с объектом момента внутри:
import moment from 'moment'
class User {
expirationDate = moment();
}
Я хочу отобразить эту дату в соответствии с языком приложения.Я использую VueJS.Чтобы обеспечить легкий доступ к переменной момента внутри компонента Vue, я выставил переменную момента:
Vue.prototype.$moment = moment;
Внутри одного из моих компонентов у меня есть кнопка, позволяющая пользователю изменять его локаль.
this.$moment.locale(newLocale); // newLocale can be en-us, zh-cn, ....
Но дата не переведена.Чтобы пойти дальше, я внутри того же модуля сделал следующую созданную функцию:
created: function() {
setInterval(() => {
console.log(this.$moment.locale());
console.log(this.user.expirationDate.format('ll'));
console.log(this.$moment().format('ll'));
}, 1000);
}
и вот результат
UserProfile.vue?ebc3:52 en
UserProfile.vue?ebc3:52 Nov 30, 2018
UserProfile.vue?ebc3:53 Nov 21, 2018
UserProfile.vue?ebc3:51 zh-cn
UserProfile.vue?ebc3:52 Nov 30, 2018
UserProfile.vue?ebc3:53 2018年11月21日
Так что я не понимаю, почему форматирование моегопользовательский момент не работает.Я боялся, что экземпляр переменной момента не совпадает между $ моментом и тем, который использовался в моем user.js.В итоге я попытался:
console.log(this.$moment(this.user.expirationDate).format('ll'));
, но результат тот же: никакого перевода вообще!Я также добавил это в свой класс User:
import moment from 'moment'
class User {
expirationDate = moment();
constructor(data) {
setInterval(()=>{console.log('from user.js > ' + moment.locale())}, 1000)
}
}
и уведомил, что локаль верна.Так что, похоже, это не переменная проблема ...
Спасибо за вашу помощь!