[Vuejs]-Vuejs DOM doesn't update after fetching data

1👍

getOgustData can’t populate events in a way that Vue can observe. Since you’re passing it as an argument, the array itself can be updated, but it’s not a reactive array. Try

var newEvents;
await data.getOgustData(this, token, '/calendar/events', 307310564, newEvents);
this.events = newEvents;

Assigning to this.events is something Vue can notice.

👤Roy J

1👍

Problem is solved. The issue didn’t come from Vue but rather from the dhtmlx scheduler which wasn’t parsing events when events was updated.

I ended up watching for any changes to events and thus, parsing it when it updates.

Thanks again for the help provided.

App.vue :

<template>
  <div id="app">
    <div class="container">
      <scheduler v-bind:events="events"></scheduler>
    </div>
  </div>
</template>

<script>
import Scheduler from './components/Scheduler.vue';
import auth from './components/auth/index'
import data from './components/data/index'
import 'dhtmlx-scheduler'

export default {
  name: 'app',
  components: {
    Scheduler
  },
  data() {
    return {
      events: []
    }
  },
  created() {
    this.getEvents();
  },
  watch: {
    events: function(value) {
      scheduler.parse(this.events, 'json');
    }
  },
  methods: {
    async getEvents() {
      const token = await auth.getToken(this);
      const apiToken = await auth.getApiToken(this, token);
      this.events = await data.getApiData(this, apiToken, '/calendar/events', 307310564, this.events);
    }
  },
}
</script>

Leave a comment