0

我有一个日期选择器,它以数据时间格式返回我的数据。我需要将此数据传递给我的 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 变量。

4

0 回答 0