【发布时间】:2021-02-28 21:52:03
【问题描述】:
我有一个带有数组的 while 循环。然而,这个循环变得无限,因为dealerCards数组没有更新,即使它设置在watch中。如何使用watch 属性更新数组?
<div id="app14">
<button v-on:click="Stand">Stand</button>
<p>Dealer: {{dealerCards}}</p>
<p>Hand: {{dealerHand}}</p>
</div>
<script>
function Draw() {
return Math.ceil(Math.random() * 13);
}
function CalcHand(cardsArray) {
cardsArray.forEach(function(c) {
hand += c;
});
return hand;
}
new Vue({
el: "#app14",
data: {
dealerCards: [],
dealerHand: 0,
},
methods: {
Stand: function() {
while (this.dealerHand < 17) {
this.dealerCards.push(Draw());
console.log("DH: " + this.dealerHand);
}
},
},
watch: {
dealerCards: {
handler: function() {
this.dealerHand = CalcHand(this.dealerCards);
},
deep: true
},
}
});
</script>
【问题讨论】:
-
如果你使用
computed而不是watch?
标签: vue.js while-loop vuejs2 infinite-loop watch