Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js Vue中的矩表示格式不是函数_Vue.js_Momentjs - Fatal编程技术网

Vue.js Vue中的矩表示格式不是函数

Vue.js Vue中的矩表示格式不是函数,vue.js,momentjs,Vue.js,Momentjs,我有一个Vue.js组件,正在使用Moment.js来表示日期和时间 在下面的代码中,我将在安装组件时设置eventDate的值。稍后,我将使用计算属性来检索它。该值显示正确,但我收到一个控制台错误,指出this.eventDate.format不是函数。为什么? <script> import moment from 'moment'; export default { data () { return {

我有一个Vue.js组件,正在使用Moment.js来表示日期和时间

在下面的代码中,我将在安装组件时设置
eventDate
的值。稍后,我将使用计算属性来检索它。该值显示正确,但我收到一个控制台错误,指出
this.eventDate.format
不是函数。为什么?

<script>
    import moment from 'moment';

    export default {
        data () {
            return {
                eventDate : ''
            }
        },
        computed : {
            eventShortDate () {
                // console.log(this.eventDate);
                return this.eventDate.format('DD-MM');
            }
        },
        mounted() {
            this.eventDate = moment(document.getElementById('event-date').innerHTML, 'DD-MM-YY');
        }
    }
</script>

从“力矩”中导入力矩;
导出默认值{
数据(){
返回{
事件日期:“”
}
},
计算:{
eventShortDate(){
//console.log(this.eventDate);
返回此.eventDate.format('DD-MM');
}
},
安装的(){
this.eventDate=moment(document.getElementById('event-date').innerHTML,'DD-MM-YY');
}
}
Chrome开发工具说,
eventDate
是一个对象。当我
console.log(this.eventDate)
时,它显示我有一个力矩对象

我尝试在Vue模板中直接使用eventDate,如
{{eventDate.format('DD-MM')}
,但同样,该值显示正确,但我得到了控制台错误。

在调用
.mounted()
之前,会计算模板对象(括号中的内容)。因此,在
.mounted()
可以将
eventDate
值更改为矩对象之前,在
'
上进行
.format
调用。但是,一旦在
.mounted()
中更改了该值,就会触发另一个渲染,从而显示正确的值

我建议尝试有条件地呈现
{{eventDate.format('DD-MM')}
if
eventDate!='',或使用
.created()
事件句柄


这个Vue.js有一个非常好的特性,我认为它很好地说明了Vue生命周期是如何工作的。

我不确定您何时渲染
{{eventDate.format('DD-MM')}
,但是从所描述的行为来看,我认为它是第一次在“”(空字符串)上应用
.format(),在装载时更改
eventDate
变量的值之前,这会触发另一次渲染,导致成功的
.format()
谢谢,Aman,您是对的。我现在正在created()上设置eventDate的值,它可以正常工作。你想对答案发表评论吗?