Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 624|回复: 0

vue——$nextTick解决节点获取不到问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-3 11:50:52 | 显示全部楼层 |阅读模式

    参考:https://www.jianshu.com/p/a7550c0e164f

     

    原理: Vue.nextTick用于延迟执行一段代码,为了在数据变化之后等待 Vue 完成更新 DOM ,可以在数据变化之后立即使用Vue.nextTick(callback) 。这样回调函数在 DOM 更新完成后就会调用。

     

    我的问题:异步获取数据,循环遍历,操作dom标签时获取不到节点

    vue:

    <div id="d-list">
        <span class="d-items" v-for="item in list">{{item.name}}({{item.num}})</span>
    </div>

    原script:

    let _this = this;
    _this.axios.get('***').then(function(res) {
      if (res.status == 200 && res.data.result == 0) {
         let _data = res.data.message;
           _this.list = _data.list;
            if (_this.list.length > 0) {
               let obj = document.getElementById('d-list'),
                  items = document.getElementsByClassName('d-items')[0];
          console.log('obj',obj,'items',items); //obj获得得到,items为undefined
           }
        } else {
            console.log('fail:' + res.data.error)
        }
    }).catch(function(err) {
       console.log('error:' + err);
    });

     

    解决:利用$nextTick

    let _this = this;
    _this.axios.get('***').then(function(res) {
      if (res.status == 200 && res.data.result == 0) {
         let _data = res.data.message;
           _this.list = _data.list;
           _this.$nextTick(() => {
             if (_this.list.length > 0) {
                 let obj = document.getElementById('d-list'),
                  items = document.getElementsByClassName('d-items')[0];
            console.log('obj',obj,'items',items); } }) }
    else { console.log('fail:' + res.data.error) } }).catch(function(err) { console.log('error:' + err); });
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 03:17 , Processed in 0.063461 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表