Ошибка в обработчике v-on: «Ошибка типа: this.formatPaymentDate не является функцией»

#vue.js #visual-studio-code

#vue.js #visual-studio-code

Вопрос:

Я создал календарь в Vue для отслеживания причитающихся платежей. В payment.js , У меня есть функция calculatePayments (payment), которая принимает запись платежа и определяет, какие даты в текущем календаре показывать для платежа. Внутри этой функции находится вызов смешанной функции formatPaymentDate(nextPmtDate). Эта функция находится в formats.js .

При первоначальном создании календаря в компоненте с именем CalendarGrid.vue несколько раз вызывается calculatePayments, который, в свою очередь, вызывает formatPaymentDate . Это работает нормально. CalendarGrid.vue имеет родственный компонент PaymentEntry.vue, в котором может быть создана новая запись платежа. У этого компонента есть кнопка «Сохранить», которая вызывает calculatePayments, которая, в свою очередь, вызывает formatPaymentDate . При нажатии кнопки «Сохранить» я получаю следующее сообщение об ошибке:

Ошибка в обработчике v-on:

«Ошибка типа: this.formatPaymentDate не является функцией»

В PaymentEntry.Vue, у меня есть следующий оператор импорта:

 import { formats } from "../library/formats";
  

formats.js:

 export const formats = {
  methods: {
     ...
     numericDate(date) {
       return this.formatDate(date, "YYYY-MM-DD");
     },
     formatPaymentDate(date) {
       return this.numericDate(date);
     }
  }
}
  

Соответствующий код из payments.js:

 calculatePayments: function (payment) {
  let nextPmtDate = moment(payment.next);
  payment.next = this.formatPaymentDate(nextPmtDate);
}
  

Я попытался переместить оператор import {format} в payments.js . Когда я это делаю, VSCode выделяет его серым цветом.

Ответ №1:

Моя проблема заключалась в том, что я не использовал правильный формат mixin в своей библиотеке