Javascript 如何在Vue交换机更改时触发事件
我有一个Vue组件,它有一个Vue开关元素。加载部件时,开关必须根据数据设置为ON或OFF。这目前发生在“mounted()”方法中。然后,当切换开关时,它需要进行一个API调用,告诉数据库新的状态。这种情况目前正在“监视”方法中发生 问题是,因为我正在“监视”交换机,所以在挂载数据时,API调用会运行。因此,如果它设置为ON,并且您导航到该组件,mounted()方法会将开关设置为ON,但它也会调用toggle API方法将其关闭。因此,视图显示为打开,但数据显示为关闭Javascript 如何在Vue交换机更改时触发事件,javascript,vue.js,vue-component,Javascript,Vue.js,Vue Component,我有一个Vue组件,它有一个Vue开关元素。加载部件时,开关必须根据数据设置为ON或OFF。这目前发生在“mounted()”方法中。然后,当切换开关时,它需要进行一个API调用,告诉数据库新的状态。这种情况目前正在“监视”方法中发生 问题是,因为我正在“监视”交换机,所以在挂载数据时,API调用会运行。因此,如果它设置为ON,并且您导航到该组件,mounted()方法会将开关设置为ON,但它也会调用toggle API方法将其关闭。因此,视图显示为打开,但数据显示为关闭 我试图更改API事件,
我试图更改API事件,使其发生在click方法上,但这不起作用,因为它无法识别click,并且函数从未运行 如何使API调用仅在单击开关时进行 HTML
不要使用
手表
,而是创建一个名为的新计算机,单击切换
。它的get
函数返回toggle
,它的set
函数执行您在手表中执行的操作(以及最终设置toggle
)。您的挂载
可以调整切换
,而不受惩罚。只有对clickToggle
的更改才会执行其他操作。创建一个名为clickToggle
的新计算程序,而不是使用手表。它的get
函数返回toggle
,它的set
函数执行您在手表中执行的操作(以及最终设置toggle
)。您的挂载
可以调整切换
,而不受惩罚。只有对单击切换的更改才能执行其他操作。我建议为您的模型(Vue 2)使用双向计算属性。
尝试在此处更新代码,但在没有Vuex设置的情况下未测试OBV。
有关参考资料,请参阅
我建议为您的模型(Vue 2)使用双向计算属性。
尝试在此处更新代码,但在没有Vuex设置的情况下未测试OBV。
有关参考资料,请参阅
“我试图更改API事件,使其发生在单击方法上,但这不起作用”您的尝试在哪里?单击应该可以正常工作。我取出了它,因为它不工作,但我将toggle watch更改为一个方法,并将@Click=“toggleMonitoring()”添加到switch元素中,但该方法在单击时从未运行过。“我已尝试更改API事件,使其发生在单击方法上,但这不起作用”您的尝试在哪里?Click应该可以正常工作。我取出了它,因为它不工作,但我将toggle watch更改为一个方法,并将@Click=“toggleMonitoring()”添加到switch元素中,但该方法在单击时从未运行。
<switcher size="lg" color="green" open-name="ON" close-name="OFF" v-model="toggle"></switcher>
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;
}
}
}
data: function(){
return {
noAvailableMonitoring: false
}
},
computed: {
report() { return this.$store.getters.currentReport },
isBeingMonitored() { return this.$store.getters.isBeingMonitored },
availableMonitoring() { return this.$store.getters.checkAvailableMonitoring },
toggle: {
get() {
return this.$store.getters.getToggle;
},
set() {
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.$store.commit('setToggle', false);
this.noAvailableMonitoring = true;
}
}
}
}