Не удается вызвать функцию внутри смонтированной()

Не удается вызвать функцию внутри смонтированной()

07.01.2019 09:20:36 Просмотров 13 Источник

У меня есть API чата, который я подключаю к Vue.проект js.

Когда пользователь переходит на страницу комнаты чата, он отправляет запрос ajax, а затем вызывает функцию, которая извлекает всю историю чата:

mounted() {
$.ajax({
  url: `http://localhost:8000/api/rooms/${this.$route.params.id}/`,
  data: {username: this.username},
  type: 'PATCH',
  success: (data) => {
    const user = data.members.find((member) => JSON.parse(member).username === this.username)

    if (user) {
      // The user belongs/has joined the session
      this.fetchChatSessionHistory(this.$route.params.id)
    }
  }
})


},

  fetchChatSessionHistory (uri) {
    $.get(`http://127.0.0.1:8000/api/rooms/${uri}/messages/`, (data) => {
      this.messages = data.messages
    })
  },

но это не с:

TypeError: _this.fetchChatSessionHistory-это не функция

Я понимаю, что это может быть определено в неправильном месте, но я понятия не имею, как это сделать правильно.

У вопроса есть решение - Посмотреть?

Ответы - Не удается вызвать функцию внутри смонтированной() / Cannot call a function inside mounted()

Является ответом!
Boussadjra Brahim

07.01.2019 09:25:34

Вы должны поместить эту функцию в свойство methods следующим образом :

mounted(){
      ...
      },
 methods:{
     fetchChatSessionHistory (uri){
         ....
      }
   }
the manh Nguyen

16.03.2020 11:27:41

Вы можете сделать следующее:

mounted() {
    var _this = this;
    $.ajax({
        url: `http://localhost:8000/api/rooms/${this.$route.params.id}/`,
        data: {username: _this.username},
        type: 'PATCH',
        success: (data) => {
        const user = data.members.find((member) => JSON.parse(member).username === _this.username)

        if (user) {
            // The user belongs/has joined the session
            _this.fetchChatSessionHistory(_this.$route.params.id)
        }
    })
}
Закрыть X