我正在使用VueJs,我需要多次观看bool,当它真实时,请做一个动作。我发现当相同值(https://github.com/vuejs/vue/issues/1302)的当前值发生变化时,手表不会触发。
目前,我只是在每次动作之前将bool设置为false,我可以更改值,在我的手表中我有一个if,我检查bool是否为真。有人知道更好的方法吗?
watch: {
'$store.state.recommandationModule.recommandationSetCorrectly': function (val) {
if (val) {
// Do action
}
}
}
答案 0 :(得分:-1)
当您为活动项目指定了相同的值时,不会发生任何事件。你需要做一些事来捕捉那些作业。
您可以使用settable computed。只要您尝试为变量赋值,就会调用它。您只需要确保设置计算值,而不是它所基于的存储变量。
new Vue({
el: '#app',
data: {
storeStateMock: true,
trueCount: 0,
changeCount: 0
},
computed: {
recommendationSetCorrectly: {
get() { return this.storeStateMock; },
set(v) {
if (v) { ++this.trueCount; }
this.storeStateMock = v;
}
}
},
watch: {
recommendationSetCorrectly() {
++this.changeCount;
}
},
created() {
setInterval(() => {
this.recommendationSetCorrectly = Math.random() > 0.5;
}, 1200);
}
});
<script src="//unpkg.com/vue@latest/dist/vue.js"></script>
<div id="app">
{{ recommendationSetCorrectly }} {{ trueCount }} {{ changeCount }}
</div>
您还可以向trueCount
添加$store
项,并在设置布尔值的突变中增加它。然后你可以看trueCount
。