javascript - 关于Vue2中$refs获取DOM元素以及scrollIntoView相关的问题
黄舟
黄舟 2017-04-11 10:28:25
[JavaScript讨论组]

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

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

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

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHPz

可以用 $nextTick 來確保 Dom 變化後再執行一些事情:

  this.$nextTick( () => {
    this.$refs.li[7].scrollIntoView()
  })

改寫了一些:jsFiddle

伊谢尔伦

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号