【发布时间】:2025-12-28 06:35:06
【问题描述】:
我有一个带有 vue-switch 元素的 Vue 组件。加载组件时,必须根据数据将开关设置为 ON 或 OFF。这目前正在“mounted()”方法中发生。然后,当切换开关时,它需要进行 API 调用,告诉数据库新的状态。这目前正在“监视”方法中发生。
问题在于,因为我正在“监视”开关,所以 API 调用会在装载时设置数据时运行。因此,如果它设置为 ON 并且您导航到组件,mounted() 方法会将开关设置为 ON,但它也会调用切换 API 方法将其关闭。因此,视图说它是打开的,但数据说它是关闭的。
我尝试更改 API 事件,使其发生在点击方法上,但这不起作用,因为它无法识别点击并且该函数永远不会运行。
如何做到只有在点击开关时才进行 API 调用?
HTML
<switcher size="lg" color="green" open-name="ON" close-name="OFF" v-model="toggle"></switcher>
VUE
data: function() {
return {
toggle: false,
noAvailalableMonitoring: false
}
},
computed: {
report() { return this.$store.getters.currentReport },
isBeingMonitored() { return this.$store.getters.isBeingMonitored },
availableMonitoring() { return this.$store.getters.checkAvailableMonitoring }
},
mounted() {
this.toggle = this.isBeingMonitored;
},
watch: {
toggle: function() {
if(this.availableMonitoring) {
let dto = {
reportToken: this.report.reportToken,
version: this.report.version
}
this.$store.dispatch('TOGGLE_MONITORING', dto).then(response => {
}, error => {
console.log("Failed.")
})
} else {
this.toggle = false;
this.noAvailalableMonitoring = true;
}
}
}
【问题讨论】:
-
“我试图改变 API 事件,让它在点击方法上发生,但这不起作用” 你在哪里尝试呢?点击应该可以正常工作。
-
我把它拿出来是因为它不起作用,但我将切换手表更改为一个方法并将@click="toggleMonitoring()" 添加到开关元素,但该方法在单击时从未运行.
标签: javascript vue.js vue-component