vue.js - vuejs 渲染完html后优惠掉方法么?

查看:88
本文介绍了vue.js - vuejs 渲染完html后优惠掉方法么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我的html是用根据数据库的数据用vue驱动生成的,
但是渲染后的完整的html中的dom我需要用js去做操作,
问题是我现在的js操作的dom节点可能vue都没渲染出来,
vue有没有一个渲染完毕的回调函数呢, 或者这个要怎么解决!!!!

html:

<div id="pageing" style="display: flex; justify-content: space-between;" class="pagebutton">
            <div class="Lev"><</div>
            <div class="On" v-for="item in items" v-if="($index<1)">{{item}}</div>
            <div class="Lev" v-for="item in items" v-if="($index>0)">{{item}}</div>
            <div class="Lev">></div>
</div>

js:

<script type="text/javascript">
            //这是vue根据数据在渲染html
            $.ajax({
                type: 'get',
                url: '/api/companynew/getAlldataNum',
                dataType: 'json',
                success: function (data) {
                    data = 20;
                    $("#pageienses").val(data % 4 == 0 ? data / 4 : ~~(data / 4) + 1);
                    var pagedata = [];
                    for (var i = 1; i <= $("#pageienses").val() ; i++) {
                        pagedata.push(i);
                    }
                    new Vue({
                        el: '#pageing',
                        data: { items: pagedata }
                    })
                },
                error: function () {
                }
            });
            //网上说是用这个回调
            Vue.nextTick(function () {
                alert();//这里写一个alert程序就正常了,好奇怪
            })
            //这里我加了ready,remdy里面的就是我想vue完全渲染完成后在执行的代码
            $(document).ready(function () {
                //让翻页按钮个数来决定容器宽度
                var $pagecontainer = $(".pagebutton");
                var pagelen = $pagecontainer.children().length;//~~$("#pageienses").val()+2//
                alert(pagelen);
                $pagecontainer.css("padding", "2em " + ($pagecontainer.outerWidth(true) - pagelen * 50) / 2 + "px");
                //鼠标悬浮效果
                var pageonIndex = $(".pagebutton .On").index();
                $pagecontainer.children().hover(
                function () {
                    for (var i = 0; i < pagelen; i++) {
                        if ($(this).index() == i) {
                            $(this)[0].className = "On";
                        }
                    }
                }, function () {
                    for (var i = 0; i < pagelen; i++) {
                        if ($(this).index() != i && $(this).index() != pageonIndex) {
                            $(this)[0].className = "Lev";
                        }
                    }
                }
                );
                //切换到选中页码
                $pagecontainer.children().click(function () {
                    $pagecontainer.children()[pageonIndex].className = "Lev";
                    pageonIndex = $(this).index();
                })
            })
        </script>

解决方案

在ready生命周期里去做

这篇关于vue.js - vuejs 渲染完html后优惠掉方法么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆