Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当方法本身更改值时,是否有任何方法停止触发vuejs watch方法?_Javascript_Vue.js_Vuejs2 - Fatal编程技术网

Javascript 当方法本身更改值时,是否有任何方法停止触发vuejs watch方法?

Javascript 当方法本身更改值时,是否有任何方法停止触发vuejs watch方法?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,这里,alert方法首先由DOM触发,然后在方法更改值时再次触发。有没有办法停止重复 我的目标是检查“alert”的值是否更改,如果更改,我想在4s后重置该值,并计算更改的次数。按照Roy J的建议,尝试在DOM上放置一个change处理程序,而不是使用监视程序 newvue({ el:“#应用程序”, 数据(){ 返回{ 警报:“”, 警报计数器:0, resetTimeoutId:null, resetTimeoutDelay:1000,//4000 } }, 方法:{ 重置(){ thi

这里,alert方法首先由DOM触发,然后在方法更改值时再次触发。有没有办法停止重复


我的目标是检查“alert”的值是否更改,如果更改,我想在4s后重置该值,并计算更改的次数。

按照Roy J的建议,尝试在DOM上放置一个
change
处理程序,而不是使用监视程序

newvue({
el:“#应用程序”,
数据(){
返回{
警报:“”,
警报计数器:0,
resetTimeoutId:null,
resetTimeoutDelay:1000,//4000
}
},
方法:{
重置(){
this.incrementAlertCounter()
this.handlePreviousResetTimeout()
this.resetTimeoutId=setTimeout(()=>{
this.alert=“”
},此为。resetTimeoutDelay)
},
handlePreviousResetTimeout(){
如果(!this.resetTimeoutId)返回
clearTimeout(this.resetTimeoutId)
},
递增警报计数器(){
此警报计数器+=1
},
},
})

{{alertCounter}}

在进行更改的DOM上放置一个
更改处理程序
处理程序,因为您希望区分在DOM中进行的数据更改和未进行的数据更改。或者使用一种方法来更新
警报
文本及其更改,而不是使用手表。
watch: {
        alert() {
          setTimeout(() => {
            this.alert = "";
          }, 4000);
        }
      }