Vue2.0 使用axios获取数据后,渲染dom,如何在这之后操作dom(渲染后的)?

发布于 2022-09-05 11:03:22 字数 1780 浏览 12 评论 0

在html中用axios返回的数据,渲染dom

      <div class="top">

        <div v-for="item of content.content" class="dpw">
          <img :src="item.url" alt="item.text" class="pw">
          <span class="jj">{{item.ctitle}}</span>
          <p>{{item.name}}</p>
        </div>

      </div>

想操作渲染的dom,但是貌似不行this.nextTick()也不行,还是我用错了?

  import jQuery from 'jquery'
  export default {
    data () {
      return {
        content:[]
      }
    },

    methods : {
      show () {
        this.$nextTick(function () {
          jQuery(".jj").hide();
          jQuery(".top > div").hover(function(){
            jQuery(".jj",this).slideToggle(500);
            jQuery("img",this).animate({
              opacity: 0.1
            },1,function(){
                jQuery(".top > div").mouseleave(function(){
                  jQuery("img",this).animate({
                    opacity: 1
                  },1)
                })
            });
          });
        });
      },
      getData () {
        this.$http({
          url: `http://192.168.1.108:3000${this.$route.path}`,
          method: 'get'
        }).then((res) => {
          this.content = res.data;
        }).catch((res) => {
          console.log('error:', res)
        })
      }
    },
    beforeRouteUpdate(to, from, next) {
        this.$http({
            url: `http://localhost:2000/getjson${to.path}`,
            method: 'get',
        }).then((res) => {
            this.content = res.data;
        }).catch((res) => {
            console.log('error: ', res);
        });
        next();
    },
    mounted() {
      this.show();
      this.getData();
    }
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悟红尘 2022-09-12 11:03:22

放在getData请求成功后就可以了

getData () {
        this.$http({
          url: `http://192.168.1.108:3000${this.$route.path}`,
          method: 'get'
        }).then((res) => {
          this.content = res.data;
          // 建议把nextTick写show方法外面
          this.$nextTick(this.show)
        }).catch((res) => {
          console.log('error:', res)
        })
      }
    },
阳光①夏 2022-09-12 11:03:22

为什么要操作dom?
看你代码都是操作dom的动画,不要用jq写动画了,太卡,你把动画都写在css3里面,然后vue来操作class,class负责动画的开关

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文