@zyusifov11

Как вызвать функцию из methods в created?

export default {
    name: 'App',
    data(){
      return {
        messages: [],
        newMessage: null,
        connection: null
      };
    },
    created: function() {
      this.connection = new WebSocket("ws://127.0.0.1:8000/ws/chat/")

      this.connection.onmessage = function(event) {
        let receivedMessage = JSON.parse(event.data).message;
        this.receiveMessage(receivedMessage)
      }
      this.connection.onopen = function(event) {
        return event
      }

    },
    methods: {
      sendMessage: function () {
        this.connection.send('{"message":"'+this.newMessage+'"}');
      },
      receiveMessage(message) {
        this.messages.push(message)
      }
    }
  }

Error:
this.receiveMessage is not a function
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@kicker1337
Попробуйте вот так:

created () {
      this.connection = new WebSocket("ws://127.0.0.1:8000/ws/chat/")

      this.connection.onmessage = event => {
        let receivedMessage = JSON.parse(event.data).message;
        this.receiveMessage(receivedMessage)
      }
      this.connection.onopen = function(event) {
        return event
      }

    },


Я изменил код

this.connection.onmessage = event => {

чтобы была стрелочная функция, `this` в этой функции будет указывать на нужный контекст (метода created).

Ещё я заменил created: function() { на сокращённую форму created () {
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы