【发布时间】:2022-01-13 12:27:23
【问题描述】:
下面是组件中的数据
data: function () {
return {
sltAreaStyle: {
paddingTop: "3%",
},
checkedTypes: ["krw", "btc", "usdt"],
};
},
下面是checkedTypes数据的watch函数
watch: {
checkedTypes: {
handler: function (newVal, oldVal) {
if (newVal.length < 1) {
alert("Choose one or more.");
var last = oldVal[0];
this.$data.checkedTypes = [last];
}
},
},
},
下面是我的html模板
<div class="ckbxArea">
<input type="checkbox" value="krw" v-model="checkedTypes">KRW</input>
<input type="checkbox" value="btc" v-model="checkedTypes">BTC</input>
<input type="checkbox" value="usdt" v-model="checkedTypes">USDT</input>
</div>
当所有复选框都未选中时,我想将最后一个值更改为 checkedTypes 数据。
如果第一个复选框最终未选中,checkedTypes 将是“krw”,如 checkedTypes = ['krw'] checkedTypes 数据是 ['krw'],但所有复选框标签都未选中。也就是dom没有更新。我认为我不太了解 Vue 的生命周期。我认为这个问题与v-model和组件的生命周期有关,但我不知道问题是什么。请解释为什么会出现这个问题并告诉我如何解决它。
【问题讨论】: