私はVueコンポーネントにvue-switch要素があります。コンポーネントがロードされると、データに応じてスイッチをONまたはOFFに設定する必要があります。これは現在、 'mounted()'メソッド内で起こっています。次に、スイッチを切り替えると、データベースに新しい状態を伝えるAPI呼び出しを行う必要があります。これは現在、「時計」方法で起こっている。Vueスイッチでイベントを発生させる方法
問題は、私がスイッチを '見ている'ため、データがマウント時に設定されたときにAPIコールが実行されることです。したがって、ONに設定されている場合、コンポーネントにナビゲートすると、mounted()メソッドはスイッチをONに設定しますが、それをオフにするTOggle APIメソッドも呼び出します。したがって、ビューにはオンだが、データにはオフと表示されます。
APIイベントをクリックメソッドで発生させるように変更しようとしましたが、クリックを認識せず、関数が実行されないため動作しません。
スイッチをクリックしたときにのみAPI呼び出しが行われるようにするにはどうすればよいですか?
代わりclickToggle
という名前の計算された新しいを作成し、
watch
を持つの
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()"をswitch要素に追加しましたが、メソッドはクリックされたときに実行されませんでした。 – Linx