| // 引入bindingx,此库类似于微信小程序wxs,目的是让js运行在视图层,减少视图层和逻辑层的通信折损 | |
| const BindingX = uni.requireNativePlugin('bindingx') | |
| 
 | |
| export default { | |
|     methods: { | |
|         // 此处不写注释,请自行体会 | |
|         nvueScrollHandler(e) { | |
|             const anchor = this.$refs['u-scroll-list__scroll-view'].ref | |
|             const 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 = uni.$u.os() === 'ios' ? 2 : 1 | |
|             const expression = `(x / ${actionNum}) / ${contentSize - scrollWidth} * ${barAllMoveWidth}` | |
|             BindingX.bind({ | |
|                 anchor, | |
|                 eventType: 'scroll', | |
|                 props: [{ | |
|                     element, | |
|                     property: 'transform.translateX', | |
|                     expression | |
|                 }] | |
|             }) | |
|         } | |
|     } | |
| }
 |