12345678910111213141516171819202122232425262728293031 |
- // 引入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
- let 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
- }]
- })
- }
- }
- }
|