小朱葛
小朱葛
  • 发布:2019-11-03 21:40
  • 更新:2019-12-16 15:36
  • 阅读:1093

【报Bug】nvue uniapp模式 list组件中套cell组件,每个cell组件都绑定唯一的ref, 然后使用weex 的dom.scrollToElement(el, {}); 函数无效

分类:nvue

<list class="HM-chat-content" @touchstart="listTouchStart">
<refresh class="loading" @refresh="onrefresh" @pullingdown="onpullingdown">

</refresh>  
<cell class="messages" v-for="(row,index) in messages" :key="index" :ref="`refMsg${row.id}`">  
    <text>{{row.name}}</text>  
</cell>  

相关js代码 用watch监听 messages的变化后,滚动到最低部

watch: {
messages(msgs) {
this.$nextTick(() => {
const scrollToCell = this.$refs[refMsg${msgs[msgs.length - 2].id}];
if(scrollToCell) {
dom.scrollToElement(scrollToCell , {});
}
}
}

2019-11-03 21:40 负责人:无 分享
已邀请:
lincenying@qq.com

lincenying@qq.com - const bio = undefined

this.$refs[refMsg${msgs[msgs.length - 2].id}][0]

  • 小朱葛 (作者)

    666, 可以老铁

    2020-01-11 14:35

  • zgoin

    回复 小朱葛: iOS的可以吗?“this.$refs[节点名]” iOS的返回是这个节点,而不是数组。安卓难道返回的是数组?是weex的bug吧,两端返回不一样

    2020-03-09 16:55

  • 我是大神的弟子

    回复 zgoin: 用楼上那个,IOS很流畅啊,Android有时候没反应,有时候能滚动到指定位置

    2020-04-14 08:19

  • 我是大神的弟子

    回复 小朱葛: 大佬,最后怎么搞的哦

    2020-04-14 08:19

  • 小朱葛 (作者)

    回复 我是大神的弟子: 就是 this.$refs[refMsg${msgs[msgs.length - 2].id}][0] 这样解决的,我之前的this.$refs[refMsg${msgs[msgs.length - 2].id}],其实并没有获取到那个对象

    2020-04-23 21:56

DCloud_UNI_HDX

DCloud_UNI_HDX

请提供示例代码

  • 小朱葛 (作者)

    我在上面加了代码,每个cell都绑定了refMsg ,监听messages 但是 dom.scrollToElement 无效,在weex官网看的实例是有效的

    2019-11-04 10:55

lincenying@qq.com

lincenying@qq.com - const bio = undefined

今天刚用这个, 有效

212259959@qq.com

212259959@qq.com

// cell class="messages" v-for="(row,index) in messages" :key="index" ref="refMsg"

const scrollToCell = this.$refs.refMsg[index];

不要动态绑定ref。 动态绑定拿到的el不是Object, 似乎是BUG。 只能固定绑定 ref="refMsg" ,然后 this.$refs.refMsg 拿到一个数组, 这时候找到对应的el对象就好了

  • 小朱葛 (作者)

    嗯,动态绑定绑定其实也可以,最主要是 this.$refs.refMsg 得到的是一个数组

    2020-04-23 21:58

要回复问题请先登录注册