Как использовать моментный формат в микшировании? - PullRequest
0 голосов
/ 15 декабря 2018

В моем приложении laravel 5.7 / vuejs 2.5 я использую библиотеку моментов для форматирования даты и времени из db. Она работает в моем компоненте, но у меня возникает ошибка при попытке обернуть момент в моем микшировании как функцию с параметрами.package.json:

{
    "private": true,
    "devDependencies": {
        "axios": "^0.18",
        "vue": "^2.5.17"
    ...
    },
    "dependencies": {
        "vue-moment": "^4.0.0",
        "vue-router": "^3.0.1",
        "vuex": "^3.0.1"
    ...
    }
}

В ресурсах / js / app.js:

import Vue from 'vue';
...
import moment from 'vue-moment'
Vue.use(moment)

В моем компоненте:

<template>
    ...
        <hr>
        <!-- THIS LINE WORKS OK-->
         <span>{{ nextCategory.created_at | moment("dddd, MMMM Do YYYY") }}</span>;
        <hr>
        <!-- {{ momentDatetime(nextCategory.created_at,'Do MMMM, YYYY h:mm:ss A') }} -->

     ...
</template>
<script>
    import {bus} from '../../app';
    import appMixin from '../../appMixin';

    export default {
        name: 'list',
        mixins: [appMixin],


</script>

Но если раскомментировать последнюю строкуЯ получил ошибку

[Vue warn]: Error in render: "TypeError: __WEBPACK_IMPORTED_MODULE_0_vue_moment___default(...) is not a function"

и в resources / js / appMixin.js:

import moment from 'vue-moment'
export default {

    methods: {

        ...
        momentDatetime(datetime, datetime_format, default_val) {
            return moment(datetime).format(datetime_format);
        },
        ...

Я нашел это решение с помощью метода «.format» в сети, но похоже, что оно недопустимо,Какой правильный путь?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Возможно, как и в случае с другим ответом, вы должны использовать момент вместо vue-moment.

Также существует проблема с последней версией момента, и одно из опубликованных здесь решений было понижено до момента 2.18.1., возможно, vue-moment использует другую версию.

Проверьте это сообщение на ту же ошибку, что и ваш вопрос: https://github.com/moment/moment/issues/4229

Также они ссылаются на эту другую проблему: https://github.com/moment/moment/issues/4216

0 голосов
/ 15 декабря 2018

Вы используете vue-moment вместо момента, поэтому в вашем package.json добавьте момент, запустив в своем терминале npm install момент или момент добавления пряжи, а затем в вашем package.json вы увидите зависимость момента

Также измените импорт в mixin, чтобы импортировать момент из «момента»

...