Vuejs需要多次观看bool

时间:2018-03-26 12:37:56

标签: javascript vue.js

我正在使用VueJs,我需要多次观看bool,当它真实时,请做一个动作。我发现当相同值(https://github.com/vuejs/vue/issues/1302)的当前值发生变化时,手表不会触发。

目前,我只是在每次动作之前将bool设置为false,我可以更改值,在我的手表中我有一个if,我检查bool是否为真。有人知道更好的方法吗?

watch: {
  '$store.state.recommandationModule.recommandationSetCorrectly': function (val) {
    if (val) {
      // Do action
    }
  }
}

1 个答案:

答案 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