gree_leran/node_modules/uview-plus/components/u-scroll-list/nvue.js

32 lines
1.3 KiB
JavaScript
Raw Normal View History

2024-06-14 01:11:29 +00:00
// 引入bindingx此库类似于微信小程序wxs目的是让js运行在视图层减少视图层和逻辑层的通信折损
const BindingX = uni.requireNativePlugin('bindingx')
import { os } from '../../libs/function/index';
export default {
methods: {
// 此处不写注释,请自行体会
nvueScrollHandler(e) {
const anchor = this.$refs['u-scroll-list__scroll-view'].ref
const element = {}
if (this.$refs['u-scroll-list__indicator__line__bar']) {
element = this.$refs['u-scroll-list__indicator__line__bar'].ref
}
const scrollLeft = e.contentOffset.x
const contentSize = e.contentSize.width
const { scrollWidth } = this
const barAllMoveWidth = this.indicatorWidth - this.indicatorBarWidth
// 在安卓和iOS上需要除的倍数不一样iOS需要除以2
const actionNum = os() === 'ios' ? 2 : 1
const expression = `(x / ${actionNum}) / ${contentSize - scrollWidth} * ${barAllMoveWidth}`
BindingX.bind({
anchor,
eventType: 'scroll',
props: [{
element,
property: 'transform.translateX',
expression
}]
})
}
}
}