Issue encountered while constructing an array within the component data following the 'created' event

It's been a while since I've dealt with Vue.Js, so my memory is a bit fuzzy. I'm facing an issue where I can't seem to modify a data array within a function that is called in the created hook.

My goal is to create a multidimensional array with the months of the year as keys and the data (retrieved from this.data.data which is a prop) as values. The component code provided here is a shortened version. I know that this.data.data returns the required array of objects, and console.log(this.fixtures); correctly displays the built data.

Below is the code snippet for the project:

data: function(){
    return {
        fixtures: []
    }

},

created() {

    this.setFixtureMonths(this.data.data);

    console.log(this.fixtures);
},

methods: {

    setFixtureMonths: function (collection) {

        let vm = this;

        collection.forEach(function(element) {

            let d = new Date(element.date);
            let m = d.toLocaleString('default', {month: 'long'}).toLocaleLowerCase();


            vm.$set(vm.fixtures, m, element);

        });

    }
}

However, upon checking the view render and using the Vue Devtools extension, I noticed that fixtures remains empty even though it's being logged correctly by the console. After going through the documentation, I understand that the conventional way of assigning arrays doesn't work, so I've resorted to using vm.$set to build the array.

If anyone could offer some insight on how to get the view to render the fixtures properly, I would greatly appreciate it.

Thank you!

Answer №1

Had a brief lapse in remembering basic JavaScript concepts

swapping out:

vm.$set(vm.fixtures, m, element);

with:

vm.fixtures[m] = element;

worked like magic.

Answer №2

If you want to enhance your code further, consider the following optimization:

setFixtureMonths: function (collection) {
        collection.forEach((element) => {

            let d = new Date(element.date);
            let m = d
                    .toLocaleString('default', {
                        month: 'long'
                    })
                    .toLocaleLowerCase();


            this.$set(vm.fixtures, m, element);

        });
    }

By switching the anonymous function to an arrow function, you can access the parent context directly without needing let vm = this;

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Is it possible to use Vuejs v-model for a complete form instead of individual inputs?

Note: This solution is applicable for Vue 2.X I am currently working on a unique Vue.js component that has the ability to generate "custom" forms. This component essentially functions as a standalone form with multiple input fields. Users have the option ...

Different ways to alter response headers using express-http-proxy

Context In my current project, I am utilizing the express-http-proxy package to facilitate requests between a Single Page Application (SPA) and a CouchDB instance. I have opted for handling this proxy setup on a per call basis rather than creating a dedic ...

Passport, Solution for Renewing Expired Tokens

Currently, I am utilizing Laravel version 5.8, VueJS, and Passport version 7.4 for handling Authentication in my project. Below you can find the code snippet for my login function: public function login(Request $request) { $validator = Valid ...

What is the best way to include a post identifier in my ajax request?

Currently, I am looking to enhance my ajax functionality by including a post identifier. At the moment, I identify my posts by checking for the presence of a specific input field. Below is the snippet of code that illustrates this: <input name="id" id= ...

Transforming a unirest 'GET' call into an axios request

I am currently utilizing TheRundown API to access sports data. The example provided to me makes use of unirest, but I am endeavoring to adapt that example into an axios request. While I have managed to make it work for the most part, my main challenge lies ...

What is the best method for dividing a user interface into several arrays of keys, each grouped by type?

Given a simple structure: structure IPerson { firstName: string; lastName: string; age: number; city: string; favoriteNumber: number; isMarried: boolean; hasDriverLicense: boolean; } How do I create arrays containing keys grouped by data typ ...

Laravel mix is compiling the Vuetify styles in the sass file and generating an empty CSS file

I am having trouble compiling vuetify 2.0.0-beta.9 SASS using laravel mix. When I compile the styles.sass file, it generates an empty css file. How can I resolve this issue? Following the documentation (), I started by running: $ npm install sass sass-lo ...

How can I make the burger icon responsive and centered in my navbar?

Struggling to center the burger icon in the navbar has been a bit of a challenge for me. Although it appears centered on small mobile devices, the icon shifts to the upper side on larger screens like tablets, losing its centered position. I am seeking advi ...

Displaying ISO date format within a date input field using React

Currently, I am working on a project where I am editing records retrieved through an API. Within the data, there are two fields that represent dates. The format of the date data from the API is in "2021-07-30T20:34:40.545Z", whereas the input field display ...

Error encountered while updating in the midst of an ongoing state transition, e.g. within the `render` method

class MyComponent extends React.PureComponent { constructor(props) { super(props); this.state = { obj: [], externalObj: [], }; } fetchData = (external) => { ... arr = arr.filter(a => a.toLowerCase().includes(&ap ...

Is it necessary for me to master React in order to code with React Native?

As I move on to learning React and/or React Native after mastering Angular, it feels like a natural progression in my development journey. My understanding is that React Native could streamline the process of building Android/iOS native apps within one pr ...

Can you provide guidance on how to divide a series of dates and times into an array based

Given a startDate and an endDate, I am looking to split them into an array of time slots indicated by the duration provided. This is not a numerical pagination, but rather dividing a time range. In my TypeScript code: startDate: Date; endDate: Date; time ...

Create efficient images using Node.js and express using sharp or canvas

Struggling with optimizing image rendering using node, express, and sharp. Successfully implemented an upload method with Jimp for images over 2000px wide and larger than 2mb in file size. While many libraries can achieve this, Jimp was more memory-effici ...

Vue component prop values are not properly recognized by Typescript

Below is a Vue component I have created for a generic sidebar that can be used multiple times with different data: <template> <div> <h5>{{ title }}</h5> <div v-for="prop of data" :key="prop.id"> ...

Populating form inputs with FCKeditor content prior to form submission

Currently, I am working on resolving an issue with a form on a website that relies on javascript for field validation. It has come to my attention that certain fields utilize fckeditor, causing the form field values to remain unset until the submit button ...

Installing global confusion with NPM

npm install css-sprite --save npm install css-sprite -g I'm curious about the significance of these two commands. I understand that "-g" makes it global, but why is that important? And what does "--save" do exactly? ...

Error in scrolling previews detected in Jssor horizontal template maker

I've been working with Jssor Slider Maker and I'm using the vertical preview template that features two columns on the left side and a maximized image on the right side. After pulling the code from the developers pack, it includes scripts, CSS an ...

First-time binding of data in d3.js did not occur

I need help analyzing the following dataset: [{ label: "ABC", p1: "23", p2: "3" }, { label: "EF", p1: "4", p2: "10" }, { label: "GV", p1: "5", p2: "15" }, { label: "FD", p1: "9", p2: "5" }, { label: "SDF", p1: "20", p2: "10" },] My at ...

javascript download multiple PDF files on Internet Explorer

I am facing an issue with downloading multiple PDF files In my list, I have various a elements with links to different PDF files. I created a loop to go through each a element and generate an iframe using the value of the href as the source. This solutio ...

Implementing service injection within filters in NestJS

Looking to integrate nestjs-config into the custom exception handler below: import { ExceptionFilter, Catch, ArgumentsHost, Injectable } from '@nestjs/common'; import { HttpException } from '@nestjs/common'; import { InjectConfig } fro ...