作者:诚仔儿 | 来源:互联网 | 2023-08-13 14:08
问题原因
举例说明,以 button 倒计时为例子;
给 button 的 disabled 赋值 this.isDisabled == true;
不生效
代码实例 template
代码实例 script
data = {
codeText:"获取验证码",
isDisabled:false //初始化 disabled 为 false;
};
//methods方法
code(){
this.isDisabled == true; //当点击之后修改 disabled 为 true ;
this.$apply(); // 手动触发脏检测
var secOnd= 60;
var t = setInterval(()=> {
if (second <= 0) {
this.isDisabled== false; //倒计时结束后修改 disabled 为 false;
secOnd= 0;
this.codeText = "重发验证码"
clearInterval(t);
} else {
second--;
this.codeText = second + "秒后重发"
}
this.$apply()
}, 1000);
}
结果如图所示
点击之前
点击之后
对此,我们可以发现问题,设置的this.isDisabled == true;
不生效;
解决办法
后来我换了一种思维,不去赋值,直接取反,已经解决这个问题
this.disabled = !this.disabled;
并且不要忘记this.$apply();
手动触发脏检测,否则有可能会出现视图不会自动更新