In my Vue app, I get a XML file with Axios and use parseString to parse XML as JSON. I then need to pass the result
to Vue data (this.events). My console log shows the parsed XML as Json, but I cannot push to Vue data inside this function.
var parseString = require('xml2js').parseString;
axios.get(`http://url.to/events.xml`)
.then(response => {
parseString(response.data, function (err, result) {
console.log(result); // returns a json array
this.events = result // nothing happens
});
})
}
How to store my JSON array to this.data in Vue?
Answer above is correct. However, I would just use arrow functions everywhere so the
this
is always the VUE class component. Also, I would check for parsing errors.Try not to use
this
insideparseString
, maybe it's a scope issue, which meansthis
isn't referring to the vue data object.Try this: