首页 > vuejs nextTick的一个疑惑

vuejs nextTick的一个疑惑

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id='app'>
        <ul>
            <li v-for='i in items'><h1>{{i}}</h1></li>
        </ul>
    </div>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.js'></script>
    <script>
        new Vue({
             el:'#app',
             data:function(){
                  return {
                    items:[]
                  };
             },
             ready:function(){
               for (var i = 0; i < 3000; i++) {
                 this.items.push( i );
               }
                       
                 
               this.$nextTick(function(){
                 var h = document.body.scrollHeight - window.innerHeight;
                 window.scrollTo(0,h);
               });
                        
                    
            }    
            
        });
    </script>
</body>
</html>

我希望完成一个效果,当数据返回以后 进行渲染 然后浏览器的滚动条滚动到底部,但是上面这样实现不成功,我试了一下用 setTimeout是可以的,但是看文档说nextTick里面已经有了setTimeout ,上面的代码为什么不行?

更新:系统 osx 10.11.4
chrome版本 50.0.2661.102 (64-bit) 测试无效
火狐 , Safari有效。


在Chrome Version 51.0.2704.106 (64-bit)里观察到同样问题,nextTick是用MutationObserver实现的,也许DOM变动还没完成?虽然document.body.scrollHeight的计算是正确的


不知道题主是用的什么环境和浏览器,我这边chrome测试是可以的,原样复制你的代码的.

【热门文章】
【热门文章】