Blame view

node_modules/uview-ui/components/u-scroll-list/nvue.js 1.2 KB
c7add6cf   “wangming”   初始版本开发完毕
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  // 引入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

                  }]

              })

          }

      }

  }