Vue

by HikariNoSekai

HTML

<div id="app">
  Version 1
  <div>
    Rating 1: {{rating}}
    <input type="radio" name="rating" id="rating-5" v-model.number="rating" @change="setRating(5)">
        <label for="rating-5"></label>
        <input type="radio" name="rating" id="rating-4" v-model.number="rating"
               @change="setRating(4)">
        <label for="rating-4"></label>
        <input type="radio" name="rating" id="rating-3" v-model.number="rating"
              @change="setRating(3)">
        <label for="rating-3"></label>
        <input type="radio" name="rating" id="rating-2" v-model.number="rating"
               @change="setRating(2)">
        <label for="rating-2"></label>
        <input type="radio" name="rating" id="rating-1" v-model.number="rating"
               @change="setRating(1)">
        <label for="rating-1"></label>
  </div>
  Version 2
  <div>
    Rating 2: {{rating2}}
    <input type="radio" name="rating2" id="rating2-5" v-model.number="rating" value="5" @change="setRating2">
    <label for="rating2-5"></label>
    <input type="radio" name="rating2" id="rating2-4" v-model.number="rating" value="4"
           @change="setRating2">
    <label for="rating2-4"></label>
    <input type="radio" name="rating2" id="rating2-3" v-model.number="rating" value="3"
           @change="setRating2">
    <label for="rating2-3"></label>
    <input type="radio" name="rating2" id="rating2-2" v-model.number="rating" value="2"
           @change="setRating2">
    <label for="rating2-2"></label>
    <input type="radio" name="rating2" id="rating2-1" v-model.number="rating" value="1"
           @change="setRating2">
    <label for="rating2-1"></label>
  </div>
</div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
}

li {
  margin: 8px 0;
}

h2 {
  font-weight: bold;
  margin-bottom: 15px;
}

del {
  color: rgba(0, 0, 0, 0.3);
}

Vue

new Vue({
  el: "#app",
  data: {
    rating: '',
    rating2: ''
  },
  methods: {
  	setRating(rate) {
    	this.rating = rate;
    },
    setRating2({value} = event.target){
    	this.rating2 = value;
    }
  }
})