How can you retrieve data fields in Vue using an async method?

Snippet:

export default {
   data() {
        return {
            cityName: '',
        }
    },
    methods: {
        searchCity(event){
            event.preventDefault()
            fetchCityData().then(function(response) { 
                console.log(response)
               this.cityName = response;
            })
        }, 
    },
}

However, the line this.cityName = response; triggers an error Uncaught (in promise) TypeError: Cannot read properties of undefined

What is the correct way to handle data from asynchronous functions in Vue 3?

Answer №1

the issue arises from this

variations between arrow and standard functions: this value

within function(){}, this refers to the global object

inside () => {}, this represents the current Vue instance

thus, modify it to

findCityCust().then(response => { 
    console.log(response)
    this.nameCity = response;
})

or

methods: {
    async findCity(event){
        event.preventDefault()
        this.nameCity = await findCityCust();
    }, 
},

Answer №2

Using arrow function instead of standard function:

export default {
   data() {
        return {
            nameCity: '',
        }
    },
    methods: {
        findCity(event){
            event.preventDefault()
            findCityCust().then((response) => { 
                console.log(response)
               this.nameCity = response;
            })
        }, 
    },
}

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

What could be the reason behind receiving a TypeError upon refreshing the page, where it claims that a state is not found even though that may not be the actual situation?

Within my application, I have a component called Wall. Users are redirected to the Wall component after successfully logging in from the Login component. In the Wall component, I am retrieving and displaying the user's name that they used during regis ...

Sending a series of values to PHP through jQuery

I am facing an issue with retrieving the checked rows values from a table column using jQuery and transmitting them to a PHP function for further processing. Currently, I have the following code: var searchIDs = $('input:checked').map(function( ...

swapping out all content within the body tag of the HTML document

When trying to replace the entire HTML inside the body tag with new content, I encountered issues with the code. The first code did not display the content, while the second code displayed the new content without clearing the old content. Here is the firs ...

How are objects typically created in Node.js applications?

These code snippets are from Node.js tests, and I am curious about why one method of instantiating an object is favored over another? // 1 var events = require('events'); var emitter = new events.EventEmitter(); emitter.on('test', doSo ...

Issue: unable to establish a connection to 127.0.0.1:465 to send an email

When attempting to send smtp alert messages from my site's email account <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="55363a3b2134362115383a3b263c21307b363">[email protected]</a> to the email addresses of m ...

Tips on how to properly display the date in v-Calendar

I'm struggling to format the date output from the v-calendar. Currently, it appears like: Fri Jul 31 2020 00:00:00 GMT+0200 (utc summertime) However, I would like it to display as 2020-07-28. I have searched through the documentation but couldn' ...

Axios mistakenly sending DELETE requests before GET requests

I'm currently developing a Vue.js project that is connected to a Lumen API and everything is functioning smoothly. Within this project, I have implemented a list of students ('Etudiants') that allows users to select and delete a student by ...

Encountering issues when implementing Parse.Cloud.httpRequest within Express - reporting a lack of success method available

When attempting to access a Facebook graph search URL using Parse Express, I encounter an issue. The request is made using Parse.Cloud.httpRequest. Instead of a successful response, I receive a 500 Internal Server Error. Upon inspecting the logs, I find t ...

Difficulty in moving to the left side

I'm attempting to make the parent div slide to the left when one of its children is clicked. However, I keep encountering the following error message: Uncaught TypeError: Property '#' of object # is not a function $(".Area").live("click ...

Analyzing the DOM content loading time for web pages generated using AJAX technology

When analyzing website performance, I rely on window.performance.timing. However, this method falls short when it comes to measuring the performance of webpages loaded through ajax calls. For instance, websites built with frameworks like angularjs often lo ...

Getting the response data from an XMLHttpRequest - Full guide with screenshots

Currently, I am working with autocomplete jQueryUI and have this code snippet: .autocomplete({ source: function( request, response ) { var results = $.getJSON( url, { term: extractLast( request.term ) }, response ); console.log(results); ...

Font distortion caused by Slick slider appears in an unexpected location in Chrome

Slick slider causing font issue in a different location specifically on Chrome Encountering a very peculiar situation where the font in a 3-column block with red titles within my slick slider appears slightly darker while transitioning to the next/previou ...

Upon submission of user-entered data, save it in an HTML table by creating an array variable for each column of the table

There is an HTML table containing multiple rows where users can input details such as Sprint, Role, Project, and Comments. The remaining fields, SID and Project Code, are fetched from the backend when the user clicks on the getDetails button. Users have th ...

Is it possible to use Javascript to read a text file?

Does anyone have experience reading text files from outside a mobile app built with XDK Intel? I attempted to use the following code, but unfortunately it's not yielding the desired outcome. function readFile (filepath){ var txtFile = "C:\tes ...

Utilize jQuery append() to create a grid layout using <td> tags

I need to integrate address information from an object into an HTML table using the append() method. The initial HTML table structure is as follows: <table class="shipping_information" border="1"> </table> To achieve this, I place the addre ...

Vue component failing to re-render after data modification

I'm a Vue beginner and I am attempting to showcase a list of "notes" that should update once a button is clicked (I have manually set the value to add for now). However, after adding a new item to the array, the changes are not reflected on the user i ...

Unusual behavior observed when altering properties of checkboxes

Here is the code snippet in question: <table border="1" style="margin:0 auto;"> <tr> <td class="pointer" style="padding: 2px;"><input style="margin-left: 2px;" type="checkbox" name="nuovoCheck" id="newCheckId" value="N" /& ...

Transforming a JSON string containing multiple arrays into a JavaScript object

My JSON file is structured as follows: { "items":[ { "username":"abc", "orderID":"1234", "commentHistory":[ { "comment":"Comment Date: 2016/12/09 13:44:23" }, { ...

Angular Material: div not being filled by layout-fill

<!-- Container Div --> <div layout-fill> <!-- Image Div --> <div layout="column" layout-align="center center" class="coverImage" layout-fill> <md-content class="md-padding"> Sample Text Here ...

Leveraging AJAX within a RESTful API in a Node.js environment to retrieve a JSON file and dynamically parse its contents according to the specific button selected on the front-end interface

Can anyone help me with understanding the communication process between server.js (Node.js) and the front-end JavaScript file? I am trying to implement AJAX as a RESTful API in the server to retrieve a JSON file, parse it based on specific button clicks in ...