VueJS:看两个属性

李明洋*_*李明洋 6 javascript watch vue.js

假设我有两个数据属性:

data() {
  return {
    a: false, 
    b: false, 
  }
}
Run Code Online (Sandbox Code Playgroud)

ab成为true在同一时间,我想办理相关任务.

如何在Vue中使用watch方法来实现此目的?

Ber*_*ert 15

观察计算值.

computed:{
    combined(){
        return this.a && this.b
    }
}
watch:{
    combined(value){
        if (value)
            //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

上面使用$ watch有一个简短的手.

vm.$watch(
  function () {
    return this.a + this.b
  },
  function (newVal, oldVal) {
    // do something
  }
)
Run Code Online (Sandbox Code Playgroud)

  • 以这种方式使用组合计算域看起来完全错误。如果 a=true 和 b=false 然后它们更改为 a=false 和 b=true 或 a=false 和 b=false,则观察者将不会执行,因为组合值仍然为 false...更不用说这是布尔值特有的。尽管该方法本身非常有效 - 您只需要找到正确的方法来生成组合价值即可。例如,`combined(){ return [this.a, this.b]; }` 应该适用于几乎任何基本类型值(可能不适用于对象 - `JSON.stringify([a, b])` 在这种情况下应该适用) (2认同)