<!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>

firstElementChild
返回的是一个引用,你打印一个引用只能看到最终结果,你得改成firstElementChild.outerHTML
。vue
数据变动并不是同步更改dom
,所以你得把第二段放nextTick
里。