mescroll-mixins.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // mescroll-body 和 mescroll-uni 通用
  2. // import MescrollUni from "./mescroll-uni.vue";
  3. // import MescrollBody from "./mescroll-body.vue";
  4. const MescrollMixin = {
  5. // components: { // 非H5端无法通过mixin注册组件, 只能在main.js中注册全局组件或具体界面中注册
  6. // MescrollUni,
  7. // MescrollBody
  8. // },
  9. data() {
  10. return {
  11. downOption: {
  12. auto: false //是否在初始化后,自动执行downCallback; 默认true
  13. },
  14. // title: '首页',
  15. mescroll: null //mescroll实例对象
  16. }
  17. },
  18. onLoad(options) {
  19. if (options.name) {
  20. uni.setNavigationBarTitle({
  21. title: decodeURIComponent(options.name)
  22. });
  23. }
  24. },
  25. // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
  26. onPullDownRefresh() {
  27. this.mescroll && this.mescroll.onPullDownRefresh();
  28. },
  29. // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
  30. onPageScroll(e) {
  31. this.mescroll && this.mescroll.onPageScroll(e);
  32. },
  33. // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
  34. onReachBottom() {
  35. this.mescroll && this.mescroll.onReachBottom();
  36. },
  37. methods: {
  38. // mescroll组件初始化的回调,可获取到mescroll对象
  39. mescrollInit(mescroll) {
  40. this.mescroll = mescroll;
  41. this.mescrollInitByRef(); // 兼容字节跳动小程序
  42. },
  43. // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序: http://www.mescroll.com/qa.html?v=20200107#q26)
  44. mescrollInitByRef() {
  45. if (!this.mescroll || !this.mescroll.resetUpScroll) {
  46. let mescrollRef = this.$refs.mescrollRef;
  47. if (mescrollRef) this.mescroll = mescrollRef.mescroll
  48. }
  49. },
  50. // 下拉刷新的回调
  51. downCallback() {
  52. // mixin默认resetUpScroll
  53. setTimeout(() => {
  54. this.mescroll.resetUpScroll()
  55. }, 1e3);
  56. },
  57. // 上拉加载的回调
  58. upCallback() {
  59. // mixin默认延时500自动结束加载
  60. setTimeout(() => {
  61. this.mescroll.endErr();
  62. }, 500)
  63. }
  64. },
  65. mounted() {
  66. this.mescrollInitByRef(); // 兼容字节跳动小程序, 避免未设置@init或@init此时未能取到ref的情况
  67. }
  68. }
  69. export default MescrollMixin;