vue $ref 的执行结果为什么是这样的?不应该先获取1 在获取0 吗

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src='https://vuejs.org/js/vue.js'></script>
</head>
<body>
    <div id="test">
        <ul id="box" ref='box'>
            <li v-for='item in num'>{{item}}</li>
        </ul>
    </div>
    <script>
        new Vue({
            el:'#test',
            data:{
                num:[1,2,3,4,5,6,7,8]
            },
            mounted(){
                console.log(this.num, new Date().getTime());
                // var obox = document.getElementById('box');
                console.log(this.$refs.box.firstElementChild, new Date().getTime());
                this.num = [0].concat(this.num);
                console.log(this.num, new Date().getTime());
                // var oli = document.getElementsByTagName('li');
                // var odom = document.createElement('LI');
                // odom.innerHTML = 0;
                // this.$refs.box.insertBefore(odom,oli[0]);
                console.log(this.$refs.box.firstElementChild, new Date().getTime());
            },
            methods:{
            }
        })
    </script>
</body>
</html>

clipboard.png

阅读 1.7k
1 个回答
  1. firstElementChild返回的是一个引用,你打印一个引用只能看到最终结果,你得改成firstElementChild.outerHTML
  2. vue数据变动并不是同步更改dom,所以你得把第二段放nextTick里。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题