我有这个被监视的属性叫做案例:
cases: {
handler: function () {
let vc = this
if (vc.areCasesValid()) {
console.log('schema-cases#handler - casesValid', vc.cases)
vc.setApiModelFromView()
vc.$emit('valid', vc.apiModel)
return true
}
else {
console.log('template-heuristic-cases#handler - casesInvalid', vc.cases)
vc.$emit('invalid')
return false
}
},
deep: true
},
所有验证步骤目前都在areCasesValid
函数中,但我希望提高应用程序的可用性,并且该过程涉及将不同的验证步骤放入不同的组件中。
考虑到这一点,观察cases
在不同组件中经历的不同变化的最简单(不一定是最优雅)的方法是什么?
答案 0 :(得分:0)
如果你想保持简单并且不想像vuex这样使用状态管理,你可以使用事件总线:
您的活动巴士:
<template>
<div class="pleeease-click-me" @click="emitGlobalClickEvent()"></div>
</template>
<script>
// Import the EventBus we just created.
import { EventBus } from './event-bus.js';
export default {
data() {
return {
clickCount: 0
}
},
methods: {
emitGlobalClickEvent() {
this.clickCount++;
// Send the event on a channel (i-got-clicked) with a payload (the click count.)
EventBus.$emit('i-got-clicked', this.clickCount);
}
}
}
</script>
发出事件的组件:
// Import the EventBus.
import { EventBus } from './event-bus.js';
// Listen for the i-got-clicked event and its payload.
EventBus.$on('i-got-clicked', clickCount => {
console.log(`Oh, that's nice. It's gotten ${clickCount} clicks! :)`)
});
接收活动的组件:
.Ubuntu
{
font-family: Ubuntu;
}
可以在此处找到完整的示例和更多解释:https://alligator.io/vuejs/global-event-bus/