vuejs v-model 和value 值不同步

<input v-model='password' ref='password' />
<script type="text/javascript">

new Vue({
    el:'.loginDiv',
    data:{
        password:''
    },
    methods:{
        submitForm:function() {
            var sha = hex_sha1(this.password);
            this.password = sha;
            console.log(this.$refs.password.value)
        }
    }
})

</script>
为什么我执行submitForm这个函数,改变password,而this.$refs.password.value打印出来的却不是password的值

阅读 4.5k
3 个回答

password值是同步更新的,而 DOM 是异步更新的。可以等本轮 DOM 更新再获取 DOM 值。

this.$nextTick(() => {
    console.log(this.$refs.password.value)
})

可以认为,这个值已经告诉了v-model,但是他还没来得及写到页面上,这时候你直接去取页面的值,还是旧的值.
更新页面是异步操作,你这块代码都执行完了才会去做.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题