Ошибка VueJS "Uncaught TypeError: this.sendDrag не является функцией" в mount () - PullRequest
1 голос
/ 30 апреля 2019

Я не могу понять, почему this.sendDrag('started') возвращает эту ошибку:

"Uncaught TypeError: this.sendDrag не является функцией"

  methods: {
    sendDrag (val) {
      console.log(val)
    }
[...]



    mounted () {
        this.$nextTick(() => {
          this.$refs.flickity.on('dragStart', function () {
            this.stageDragging = true
            this.sendDrag('started')
          })

Что вызывает ошибку и как ее исправить?

1 Ответ

1 голос
/ 01 мая 2019

Вам нужно захватить значение this в замыкании, потому что вы вызываете его из функции, которая имеет this.

Если бы вы использовали стрелку-лямбда-нотацию ()=>{} вместо function(), она автоматически захватила бы this. И это реальная разница между двумя обозначениями.

mounted () {
        this.$nextTick(() => {
          const that = this;
          this.$refs.flickity.on('dragStart', function () {
            that.stageDragging = true
            that.sendDrag('started')
          })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...