我有一个Vue组件,它具有vue开关元素。当组件被加载时,开关必须根据数据设置为ON或OFF。这当前正在'mounted()'方法中发生。然后,当切换开关时,它需要进行一次API调用,以告知数据库新的状态。这是目前正在发生的'手表'方法。如何在Vue开关更改上触发事件
问题是因为我正在'看'开关,当数据在挂载时被设置时,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()”,但方法在点击时从未运行。 – Linx