Я намагаюся роздрукувати час дати, використовуючи, наприклад, наступне в vue-for
{{ moment().format('MMMM Do YYYY, h:mm:ss a') }}
але, воно не з'являється. Це просто заготовка. Як я можу спробувати використати момент в vue?
Я намагаюся роздрукувати час дати, використовуючи, наприклад, наступне в vue-for
{{ moment().format('MMMM Do YYYY, h:mm:ss a') }}
але, воно не з'являється. Це просто заготовка. Як я можу спробувати використати момент в vue?
Відповіді:
За допомогою вашого коду, vue.js
намагається отримати доступ до moment()
методу зі своєї області дії.
Отже, ви повинні використовувати такий метод:
methods: {
moment: function () {
return moment();
}
},
Якщо ви хочете передати дату moment.js
, я пропоную використовувати фільтри:
filters: {
moment: function (date) {
return moment(date).format('MMMM Do YYYY, h:mm:ss a');
}
}
<span>{{ date | moment }}</span>
Якщо ваш проект є додатком на одній сторінці (наприклад, створеним проектом vue init webpack myproject
), я вважаю, що цей спосіб є найбільш інтуїтивним та простим:
В main.js
import moment from 'moment'
Vue.prototype.moment = moment
Потім у своєму шаблоні просто використовуйте
<span>{{moment(date).format('YYYY-MM-DD')}}</span>
У своєму package.json
в "dependencies"
розділі додайте момент:
"dependencies": {
"moment": "^2.15.2",
...
}
У компонент, де ви хочете використовувати момент, імпортуйте його:
<script>
import moment from 'moment'
...
І в цей же компонент додайте обчислену властивість:
computed: {
timestamp: function () {
return moment(this.<model>.attributes['created-at']).format('YYYY-MM-DD [at] hh:mm')
}
}
А потім у шаблоні цього компонента:
<p>{{ timestamp }}</p>
date2day: function (date) {return moment(date).format('dddd')}
Ви не можете використовувати computed
та methods
замість цього використовувати .
Я змусив його працювати з Vue 2.0 в одному файловому компоненті.
npm install moment
у папці, де встановлено vue
<template>
<div v-for="meta in order.meta">
{{ getHumanDate(meta.value.date) }}
</div>
</template>
<script>
import moment from 'moment';
export default {
methods: {
getHumanDate : function (date) {
return moment(date, 'YYYY-MM-DD').format('DD/MM/YYYY');
}
}
}
</script>
Ось приклад використання сторонньої бібліотеки обгортки для Vue, що називається vue-moment
.
Крім прив’язки екземпляра Moment до кореневої області Vue, ця бібліотека включає moment
і duration
фільтри.
Цей приклад включає локалізацію та використовує імпорт модулів ES6, офіційний стандарт замість того, щоб вимагати системи модулів CommonJS.
import Vue from 'vue';
import moment from 'moment';
import VueMoment from 'vue-moment';
// Load Locales ('en' comes loaded by default)
require('moment/locale/es');
// Choose Locale
moment.locale('es');
Vue.use(VueMoment, { moment });
Тепер ви можете використовувати екземпляр Moment безпосередньо у ваших шаблонах Vue без додаткової розмітки:
<small>Copyright {{ $moment().year() }}</small>
Або фільтри:
<span>{{ 3600000 | duration('humanize') }}</span>
<!-- "an hour" -->
<span>{{ [2, 'years'] | duration('add', 1, 'year') | duration('humanize') }}</span>
<!-- "3 years" -->
// plugins/moment.js
import moment from 'moment';
moment.locale('ru');
export default function install (Vue) {
Object.defineProperties(Vue.prototype, {
$moment: {
get () {
return moment;
}
}
})
}
// main.js
import moment from './plugins/moment.js';
Vue.use(moment);
// use this.$moment in your components
Я просто імпортую модуль моменту, а потім використовую обчислену функцію для обробки моєї логіки moment () та повертає значення, на яке посилається в шаблоні.
Хоча я не використовував це і, отже, не можу говорити про його ефективність, я знайшов https://github.com/brockpetrie/vue-moment для альтернативного розгляду
vue-момент
дуже приємний плагін для проекту Vue і дуже гладко працює з компонентами та існуючим кодом. Насолоджуйтесь моментами ... 😍
// in your main.js
Vue.use(require('vue-moment'));
// and use in component
{{'2019-10-03 14:02:22' | moment("calendar")}}
// or like this
{{created_at | moment("calendar")}}