如何在混音中使用时刻格式?
How to use moment format in mixing?
在我的 laravel 5.7 / vuejs 2.5 应用程序中,我使用时刻库从数据库格式化日期时间
它在我的组件中工作,但是当我尝试将 moment 包装在我的混合函数中并带有参数时出现错误。
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"
...
}
}
在 resources/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”方法判断的方法,但是貌似是无效的。
哪种方法正确?
谢谢!
您使用的是 vue-moment 而不是 moment,因此在您的 package.json 通过 运行 添加 moment 在您的终端 npm install moment 或 yarn add moment 中,然后在您的 package.json 你应该看到矩依赖性
同时将 mixin 中的 import 更改为 import moment from 'moment'
也许像其他答案一样,你必须使用 moment 而不是 vue-moment。
最新版本的 moment 也有问题,这里 posted 的解决方案之一是降级到 moment 2.18.1,也许 vue-moment 使用的是另一个版本。
检查此 post 与您的问题相同的错误:
https://github.com/moment/moment/issues/4229
他们还提到了另一个问题:
https://github.com/moment/moment/issues/4216
在我的 laravel 5.7 / vuejs 2.5 应用程序中,我使用时刻库从数据库格式化日期时间 它在我的组件中工作,但是当我尝试将 moment 包装在我的混合函数中并带有参数时出现错误。 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"
...
}
}
在 resources/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”方法判断的方法,但是貌似是无效的。 哪种方法正确?
谢谢!
您使用的是 vue-moment 而不是 moment,因此在您的 package.json 通过 运行 添加 moment 在您的终端 npm install moment 或 yarn add moment 中,然后在您的 package.json 你应该看到矩依赖性
同时将 mixin 中的 import 更改为 import moment from 'moment'
也许像其他答案一样,你必须使用 moment 而不是 vue-moment。
最新版本的 moment 也有问题,这里 posted 的解决方案之一是降级到 moment 2.18.1,也许 vue-moment 使用的是另一个版本。
检查此 post 与您的问题相同的错误: https://github.com/moment/moment/issues/4229
他们还提到了另一个问题: https://github.com/moment/moment/issues/4216