You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
/** |
|
* mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例) |
|
*/ |
|
const MescrollMoreItemMixin = { |
|
// 支付宝小程序不支持props的mixin,需写在具体的页面中 |
|
// #ifndef MP-ALIPAY || MP-DINGTALK |
|
props:{ |
|
i: Number, // 每个tab页的专属下标 |
|
index: { // 当前tab的下标 |
|
type: Number, |
|
default(){ |
|
return 0 |
|
} |
|
} |
|
}, |
|
// #endif |
|
data() { |
|
return { |
|
downOption:{ |
|
auto:false // 不自动加载 |
|
}, |
|
upOption:{ |
|
auto:false // 不自动加载 |
|
}, |
|
isInit: false // 当前tab是否已初始化 |
|
} |
|
}, |
|
watch:{ |
|
// 监听下标的变化 |
|
index(val){ |
|
if (this.i === val && !this.isInit) { |
|
this.isInit = true; // 标记为true |
|
this.mescroll && this.mescroll.triggerDownScroll(); |
|
} |
|
} |
|
}, |
|
methods: { |
|
// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序) |
|
mescrollInitByRef() { |
|
if(!this.mescroll || !this.mescroll.resetUpScroll){ |
|
// 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标' |
|
let mescrollRef = this.$refs.mescrollRef || this.$refs['mescrollRef'+this.i]; |
|
if(mescrollRef) this.mescroll = mescrollRef.mescroll |
|
} |
|
}, |
|
// mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit) |
|
mescrollInit(mescroll) { |
|
this.mescroll = mescroll; |
|
this.mescrollInitByRef && this.mescrollInitByRef(); // 兼容字节跳动小程序 |
|
// 自动加载当前tab的数据 |
|
if(this.i === this.index){ |
|
this.isInit = true; // 标记为true |
|
this.mescroll.triggerDownScroll(); |
|
} |
|
}, |
|
} |
|
} |
|
|
|
export default MescrollMoreItemMixin;
|
|
|