关于Vue2中$refs获取DOM元素以及scrollIntoView相关的问题

1.需求是这样的,页面内部有个ul+li滚动列表,现在希望列表中的某个超出的元素滚动到可以看见的位置,大概画了一下示意图
图片描述

2.我用的是vue2,本打算用scrollIntoView试试,但在获取dom元素的时候遇到了问题,ref不是响应式的,但我的视频列表是用vue-resource取出来的,所以用ref取不到,并且用document.getElementById等方法也取不到,具体可以看看例子

https://jsfiddle.net/3jjx8b3s/3/

所以我想问的是:
需求有什么实现方法,我能想到的就是改变ul的scrollTop值
Vue2中有什么方法能获取动态的dom元素?我知道Vue的理念是操作数据而不是操作dom,但像我的需求这种问题很难用数据表现出来吧,还请大神指点一二

阅读 17.5k
评论
    3 个回答

    需要对纯 DOM 元素进行底层操作的时候,vue提供了自定义指令来处理

    <div id='app'>
      <ul  v-scroll>
      <li v-for="item in items" ref='li' :id="'li_'+item.id">{{item.name}}</li>
      </ul>
    </div>
    Vue.directive('scroll', {
      // 当组件完成一次更新时调用 还有其它的钩子函数 自行选择合适的
      componentUpdated: function (el) {
        //el 对应上面的scroll绑定的ul
        // do something...
      }
    })

    详细的自己查看API了:自定义指令api

      相似问题
      推荐文章