Ваш if-else не согласован для всех x
.Для 2 и 3 у вас есть вложенная проверка, но не для 1. Когда x = 2
, это условие ложно
if ((x == 1) && (this.one < 3))
Так, this.one = 0
вызывается всякий раз, когда нажимается вторая или третья кнопка
Добавьте аналогичную проверку для 1
if (x == 1) {
if (this.one < 3) {
this.one++;
} else {
this.one = 0
}
}
Вы можете упростить свой код, чтобы передать имя свойства таким образом, чтобы избежать многократных проверок
new Vue({
el: "#app",
data: {
one: 0,
two: 0,
three: 0
},
methods: {
chooseOne: function(prop) {
if (this[prop] < 3) {
this[prop]++
} else {
this[prop] = 0
}
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<button @click="chooseOne('one')">
{{ one }}
</button>
<button @click="chooseOne('two')">
{{ two }}
</button>
<button @click="chooseOne('three')">
{{ three }}
</button>
</div>