【发布时间】:2019-08-17 12:36:36
【问题描述】:
希望:
在发出事件时显示 HTML 元素,并在显示元素后运行一些计算。
但是:
HTML 元素仅在计算运行后显示。
奇怪:
控制台显示事件回调在计算之前运行。
let app = new Vue({
el: '#app',
data: {
show: false
},
methods: {
showCallback() {
console.log('showCallback');
console.log(this.show);
this.show = true;
console.log(this.show);
},
start() {
this.$emit('loading-show');
console.log('Calculation start');
// Do some calculations
for (let i = 1; i < 10000000000; i++) {}
console.log('Calculation finish');
}
},
mounted() {
this.$on('loading-show', this.showCallback);
},
destroyed() {
this.$off('loading-show', this.showCallback);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<button @click="start">Start</button>
<h1 v-show="show">Shown</h1>
</div>
【问题讨论】:
-
嗨 @KGabor 你应该把你的 showCallback 放在方法中:{}
-
嗨@Birante 更新了sn-p代码,还是不行
标签: javascript vue.js