用定时器每秒更改变量值时怎么避免其它v-bind值的更新?
发布于 7 年前 作者 ludlow 2277 次浏览 最后一次编辑是 7 年前 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

如下代码,手机访问。点击“获取验证码”后,在定时器执行期间点开下拉列表,select的option中 :value的值跟随codeText每秒刷新一次,导致option每秒也重新渲染,此时很难选上某个选项。点解?

<!doctype html>
<html>
<head>
 <meta charset="utf-8">
 <title>lalalalala</title>
 <style>
 [v-cloak]{
    display: none;
}
	input,select{
	    margin: 50px 0;
		height: 100px;
		width: 100%;
		font-size: 50px;
	}
 </style>
</head>

<body>
<div id="app" v-cloak>
    <input type="button" v-model="codeText" @click="getTelCode">
   
    <select>
        <option v-for="p in list" :value="p.id">{{ p.province }}</option>
    </select>
</div>
<script src="https://cdn.bootcss.com/vue/2.3.4/vue.min.js"></script>
</body>
<script>

new Vue({
    el:'#app',
    data:{
        codeText:"获取验证码",
        list:[
            {
                id:1,
                province:'Beijing'
            },{
                id:2,
                province:'Shanghai'
            },{
                id:3,
                province:'Guangzhou'
            },{
                id:4,
                province:'Shenzhen'
            },{
                id:5,
                province:'Nanjing'
            },{
                id:6,
                province:'Suuuu'
            }
            
        ]
    },
    methods:{
        getTelCode:function(){
            var _this = this
            var count = 60
            var text = _this.codeText
            _this.codeText = count + "s后可重新获取"
            var i = setInterval(function () {
                if( count == 1 ){
                    _this.codeText = text
                    clearInterval(i)
                }else{
                    _this.codeText = --count + "s后可重新获取"
                }
            },1000)
        }
    }
    
})

</script>

</html>
回到顶部