我有一个日期选择器,它以数据时间格式返回我的数据。我需要将此数据传递给我的 api,它接受 YYYY-MM-DD 格式的数据。
我有:
methods: {
onDateChanged: function(event) {
console.log(event.startDate)
console.log(event.endDate)
this.startDate = event.startDate.toISOString().slice(0,10).replace(/-/g,"-");
this.endDate = event.endDate.toISOString().slice(0,10).replace(/-/g,"-");
this.loadTopBar();
console.log(this.startDate.toISOString().slice(0,10).replace(/-/g,"-"))
console.log(this.endDate.toISOString().slice(0,10).replace(/-/g,"-"))
},
loadTopBar: function(){
var vm = this
axios.get('/api/v2/metrics/', {
params: {
start: this.startDate,
end: this.endDate
}
})
.then(function(response) {
vm.json = response.data
// Sessions
前两个控制台日志在控制台中正确输出,Tue May 02 2017 00:00:00 GMT-0300 (-03)
并且Tue May 09 2017 00:00:00 GMT-0300 (-03)
也适用于一个简单的.toISOString().slice(0,10).replace(/-/g,"-"))
js 文件,我还尝试了一个函数:
`function formatDate(date) {
return `${ date.getFullYear() }-${ ('0' + (date.getMonth() + 1)).slice(-2) }-${ ('0' + date.getDate()).slice(-2) }`;
}
这在一个简单的 js 文件中也可以正常工作。但是,在 vue.js 中使用任何一个时,都会出现以下错误:
app.js:27 Uncaught TypeError: this.startDate.toISOString is not a function
at Vue$3.onDateChanged (app.js:27)
at EventEmitter.boundFn (vue@2.3.2:167)
at EventEmitter.emit (emitter.js:59)
at Flatpickr.onClose (datepicker.js:42)
at triggerEvent (flatpickr@2.6.1:1551)
at Flatpickr.close (flatpickr@2.6.1:834)
at selectDate (flatpickr@2.6.1:1310)
at HTMLDivElement.<anonymous> (flatpickr@2.6.1:204)
但是即使我有这些错误 axios 调用了正确的数据,所以参数实际上是以正确的格式传递的。为什么会这样?我怎样才能摆脱这些错误?
datepicker 库是flatpickr
Ps 我不确定它是否相关,但我正在使用这个事件发射器在我的 eventpicker vue.js 应用程序和加载图表等的所有其他 vue.js 应用程序之间传输 startDate 和 endDate 变量。