What causes all methods within a Vue template object to trigger automatically upon clicking a button?

I added a click event to the button element which calls the increase method to update the counter. The result() and result2() methods are called when the page loads, but they also get called automatically when the button is clicked. I'm wondering why this happens and how the increase, result, and result2 methods are related to each other. Is there a way to make them only call once?

Here is the code:

<div id="app">
   <button v-on:click="increase">Click Me</button>
   <p>{{ counter }}</p>
   <p>{{ result() }}</p>
   <p>{{ result2() }}</p>
</div>

<script>
   new Vue({
       el: '#app',
       data: {
          counter: 0
       },
       methods: {
          increase: function() {
            this.counter++
          },
          result: function() {
            console.log('Hi I m result');   
          },
          result2: function() {
            console.log('Hi I m result 2'); 
          }
       }
   })
</script>

Answer №1

Whenever the counter property is updated, the DOM will be refreshed and invoke all properties in your script such as data, computed properties, and methods. If you only want to execute these methods on page load, you can call them within the mounted hook:

new Vue({
  el: '#app',
  data: () => ({
    counter: 0
  }),
  methods: {
    increase: function() {
      this.counter++
    },
    result: function() {
      console.log('Hi, I am result');
    },
    result2: function() {
      console.log('Hi, I am result 2');
    }
  },
  mounted() {
    this.result();
    this.result2()
  }
})
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.1/vue.min.js"></script>
<div id="app">
  <button v-on:click="increase" class="btn">Click Me</button>
  <p>{{ counter }}</p>

</div>

Answer №2

There is no connection between the two. Every time your component is refreshed, any mustaches {{ }} will be assessed if they invoke methods.

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 is the best way to include a background image in a div within a React component?

I'm currently following a tutorial on creating an RPG game using React. The tutorial can be found at this link. I am trying to replicate the presenter's code by typing it out myself. However, I'm running into an issue when attempting to add ...

The issue arises when the jQuery $.get() method fails to deliver the expected response to the client, despite returning a status code of

I am having trouble with sending a REQUEST to a server in order to retrieve a message. I have tried using the jQuery method $.get(), and it seems to have successfully reached the server. However, I am facing an issue where I am unable to send a RESPONSE b ...

Switch up the CSS file based on the URL route

My project consists of the following files: App.vue, changcolor.vue, config.json, main.js, index.html, xyz.css, abc.css. I need a solution where based on the URL, the appropriate CSS file is applied. For instance, if the URL is "xyz.local.com" then xyz.cs ...

Having trouble with your Discord.js Bot continuously going offline and getting Value errors? Here’s how to resolve it

Why do I keep encountering this error? TypeError: Cannot read property 'size' of undefined at Client.client.on.message (/home/colter/Code/groundskeeper/index.js:38:30) at emitOne (events.js:116:13) at Client.emit (events.js:211:7) at MessageCre ...

Passing the results of sequelize through express after the completion of a forEach iteration

In an express route, I am running a somewhat complex sequelize query that requires me to run a second query afterward to append necessary data to the result: //Get inboxes based on passed params router.get('/:data', function(req, res, next) { ...

Effortlessly glide to a specific div ID upon page load using the URL address

One way to implement smooth scrolling to an anchor on page load is by using jQuery. Here's an example code snippet: $(function(){ $('html, body').animate({ scrollTop: $( $('#anchor1').attr('href') ).offset(). ...

Using Typescript to set a custom timeout duration based on a dynamic variable within a for loop

My function includes a timeout that changes every 3 seconds: setActiveImage(promotions) { for (let i = 0; i <= promotions.length - 1; i++) { setTimeout(()=> { this.activeImage = 'http://myrul/public/Commercials/' + promo ...

Utilizing Express.js to establish a connection with Twitter

Attempting to authenticate with Twitter using Express.js and Grant on my Windows 7 machine. Upon running node app.js in the command line, I encounter the following error: My main query is why 'MADE IT HERE' doesn't appear in the console ou ...

Failure to Update Component

I'm currently working on creating a component that can display real-time input from an input field. While I've seen it done using two components, I believe it's possible to achieve the same outcome with just one. In my approach, I set the s ...

Utilize Express.js to seamlessly stream and process uploaded files with formidable and gm, ensuring a streamlined process without

I am looking for a solution to upload and resize an image in one step without having to write to disk twice. For uploading images, I am using: node-formidable: https://github.com/felixge/node-formidable And for resizing the images, I am using: gm: Howev ...

tips for converting objects into arrays with JavaScript

I have an object and I would like to convert it into an array const object1 = { a: { hide:true}, b:{} }; I am currently using Object.entries to perform the conversion, however, I am struggling with understanding how it should be done. Object.entries ...

How can I generate spheres in threejs with varying radii while all passing through the shared point located at coordinates (0,0,200)?

Is there a way to generate spheres in threejs where the radius increases while always passing through a single point at 0,0,200? This would allow the origin of each new sphere to move along the z-axis. Appreciate any help, AriemWebgl ...

jQuery for concealing and revealing div elements when they are dry

I am facing a challenge in streamlining this code. My goal is to hide one div while another one appears, but I can't seem to figure out how to achieve this using a for loop. I want each div to hide separately, not all at once. Any advice would be gre ...

Filtering input based on its occurrence rate (enable/disable debounce)

Utilizing node on a raspberry pi and the module onoff to capture input. I am interested in running function B only if function A is triggered twice within one minute. var gpio = require('onoff').Gpio; var sensor = new gpio(7, 'in', &ap ...

Error encountered in Vue: Unexpected token (x:y) when utilizing webpack-dev-server with a process.env variable

While constructing a Vue (2.7.14) component with webpack-dev-server, I encountered a need to make a URL dynamic in my Vue CLI 2 code using a process.env variable. In order to achieve this, I made a modification to the line of code in MyComponent.vue: ...

Is it possible for the number returned by setTimeout() in JavaScript to be negative?

Is it possible for a number returned by the setTimeout() function in JavaScript to be negative? Currently, I've observed that the timeoutIds generated are sequentially numbered in Chrome as 1,2,3,4,5,6... While in Firefox, they start from number 4 an ...

Leveraging JavaScript within PHP script

I am currently developing a booking system that involves creating events in a table using PHP. I want to implement a script that will run when a user tries to book an event and then submits the form to PHP. This script will help me determine if the user ha ...

When should you use isRequired for PropType versus defaultProps in a React application?

I often find myself confused about when to use .isRequired versus .defaultProps={...}. I personally feel that I should avoid using isRequired, as it seems like creating a potential bug in the application. By using isRequired, it automatically removes the n ...

Modifying a document by ID in Mongoose without altering a specific field

In my code, I have successfully established a new connection using Mongoose and implemented a schema. Retrieving attributes from the collection is also working as intended. However, when attempting to update my collection, I am encountering difficulties. T ...

Updating database with Ajax when the button is clicked

Seeking guidance with a project as I am still grasping the concepts of javascript and jquery. The goal is to update a database entry upon clicking a button, where the content of the button is fetched from the database. Initial step involves querying the d ...