title: The method in Vue runs twice on click
body: <p>Why does the method set runs twice? You can see the console when you click the star.
  If I remove <code>@click="set(rating)"</code> nothing happens so not like it is again called elsewhere.</p>
  
  <p><a href="http://jsfiddle.net/q22tqoLu/" rel="noreferrer">http://jsfiddle.net/q22tqoLu/</a></p>
  
  <p><strong>HTML</strong></p>
  
  <pre><code>&lt;div id="star-app" v-cloak&gt;
              &lt;star-rating value="0"&gt;&lt;/star-rating&gt;
          &lt;/div&gt;
  
          &lt;template id="template-star-rating"&gt;
              &lt;div class="star-rating"&gt;
                  &lt;label
                  class="star-rating__star"
                  v-for="rating in ratings"
                  :class="{'is-selected': ((value &gt;= rating) &amp;&amp; value != null), 'is-disabled': disabled}"
                  @mouseover="star_over(rating)"
                  @mouseout="star_out"
                  @click="set(rating)"&gt;
                  &lt;input
                  class="star-rating star-rating__checkbox"
                  type="radio"
                  :name="name"
                  :disabled="disabled"
                  :id="id"
                  :required="required"
                  v-model="value"&gt;
                  ★
              &lt;/label&gt;
          &lt;/div&gt;
      &lt;/template&gt;
  </code></pre>
  
  <p><strong>JS</strong></p>
  
  <pre><code>  'use strict';
  
      Vue.component('star-rating', {
          template: '#template-star-rating',
          data: function data() {
              return {
                  value: null,
                  temp_value: null,
                  ratings: [1, 2, 3, 4, 5]
              };
          },
          props: {
              'name': String,
              'value': null,
              'id': String,
              'disabled': Boolean,
              'required': Boolean
          },
          methods: {
              star_over: function star_over(index) {
                  if (this.disabled) {
                      return;
                  }
  
                  this.temp_value = this.value;
                  this.value = index;
              },
              star_out: function star_out() {
                  if (this.disabled) {
                      return;
                  }
  
                  this.value = this.temp_value;
              },
              set: function set(value) {
                  if (this.disabled) {
                      return;
                  }
  
            // This runs twice
            console.log(value);
  
                  this.temp_value = value;
                  this.value = value;
              }
          }
      });
  
      new Vue({
          el: '#star-app'
      });
  </code></pre>
  
  <p>The code is based on older version from someone, here it also doubles <a href="https://codepen.io/sktwentysix/pen/oZwXjN" rel="noreferrer">https://codepen.io/sktwentysix/pen/oZwXjN</a></p>