Vue.js Vue中的矩表示格式不是函数
我有一个Vue.js组件,正在使用Moment.js来表示日期和时间 在下面的代码中,我将在安装组件时设置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 {
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')}
ifeventDate!=''代码>,或使用.created()
事件句柄
这个Vue.js有一个非常好的特性,我认为它很好地说明了Vue生命周期是如何工作的。我不确定您何时渲染{{eventDate.format('DD-MM')}
,但是从所描述的行为来看,我认为它是第一次在“”(空字符串)上应用.format(),在装载时更改eventDate
变量的值之前,这会触发另一次渲染,导致成功的.format()
谢谢,Aman,您是对的。我现在正在created()上设置eventDate的值,它可以正常工作。你想对答案发表评论吗?