vue如何监听符合v-if条件的dom元素渲染完毕,然后才能进行后续的操作,但是如何才能知道当前DOM元素已经渲染完毕了呢?
今天在开发一个评论列表的时候一直有这个问题,使用了各种监听,还是不行,最后使用了$nextTick的回调,才解决了问题。需求如下:
以上评论列表中,点击一条评论内容弹出评论框进行评论,需要使得输入框自动聚焦并且在手机浏览器中弹出键盘, 实现代码如下:
以上代码必须要在数据变化后使用才能生效;
this.showCommentBox = true; //展示评论框==》数据变化
// 此时 DOM 还没有更新,设置回调函数
this.$nextTick(function() {
// 此时已经渲染完成
this.$refs.commentField.focus();
_this.showConfirmBar = false;
});