| 
						 | 
						- <template>
 - 		<view 
 - 			class="uv-vtabs-item"
 - 			:id="`content_${index}`"
 - 			ref="uv-vtabs-item"
 - 		>
 - 			<slot />
 - 		</view>
 - </template>
 - <script>
 - 	import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js';
 - 	import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js';
 - 	// #ifdef APP-NVUE
 - 	const dom = uni.requireNativePlugin('dom');
 - 	// #endif
 - 	export default {
 - 		name: 'uv-vtabs-item',
 - 		mixins: [mpMixin, mixin],
 - 		props: {
 - 			index: {
 - 				type: [Number,String],
 - 				default: 0
 - 			}
 - 		},
 - 		data(){
 - 			return {
 - 				// 记录item的离顶部的距离
 - 				top: 0,
 - 				// 记录item的高度
 - 				height: 0
 - 				// 是否为联动
 - 			}
 - 		},
 - 		mounted() {
 - 			this.init();
 - 		},
 - 		methods: {
 - 			async init(){
 - 				this.getParentData('uv-vtabs');
 - 				if (!this.parent) {
 - 					return this.$uv.error('uv-vtabs必须要搭配uv-vtabs-item组件使用')
 - 				}
 - 				if(!this.parent.chain) return;
 - 				await this.$uv.sleep();
 - 				this.getItemRect().then(size=>{
 - 					// 由于对象的引用特性,此处会同时生效到父组件的children数组的本实例的top属性中,供父组件判断读取
 - 					this.top = size.top;
 - 					this.height = size.height;
 - 				});
 - 			},
 - 			getItemRect(){
 - 				return new Promise(resolve => {
 - 					// #ifndef APP-NVUE
 - 					this.$uvGetRect('.uv-vtabs-item').then(size => {
 - 						resolve(size)
 - 					})
 - 					// #endif
 - 					// #ifdef APP-NVUE
 - 					const ref = this.$refs['uv-vtabs-item']
 - 					dom.getComponentRect(ref, res => {
 - 						resolve(res.size)
 - 					})
 - 					// #endif
 - 				})
 - 			}
 - 		}
 - 	}
 - </script>
 
 
  |