| 
						 | 
						- <template>
 - 	<!-- #ifdef APP-NVUE -->
 - 	<cell ref="uv-index-item">
 - 		<!-- #endif -->
 - 		<view
 - 			class="uv-index-item"
 - 			:id="`uv-index-item-${id}`"
 - 			:class="[`uv-index-item-${id}`]"
 - 		>
 - 			<slot />
 - 		</view>
 - 		<!-- #ifdef APP-NVUE -->
 - 	</cell>
 - 	<!-- #endif -->
 - </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
 - 	// 由于weex为阿里的KPI业绩考核的产物,所以不支持百分比单位,这里需要通过dom查询组件的宽度
 - 	const dom = uni.requireNativePlugin('dom')
 - 	// #endif
 - 	/**
 - 	 * IndexItem 
 - 	 * @description 
 - 	 * @tutorial https://www.uvui.cn/components/indexList.html
 - 	 * @property {String}
 - 	 * @event {Function}
 - 	 * @example
 - 	 */
 - 	export default {
 - 		name: 'uv-index-item',
 - 		mixins: [mpMixin, mixin],
 - 		data() {
 - 			return {
 - 				// 本组件到滚动条顶部的距离
 - 				top: 0,
 - 				height: 0,
 - 				id: ''
 - 			}
 - 		},
 - 		created() {
 - 			// 子组件uv-index-anchor的实例
 - 			this.anchor = {}
 - 		},
 - 		mounted() {
 - 			this.init()
 - 		},
 - 		methods: {
 - 			init() {
 - 				// 此处会活动父组件实例,并赋值给实例的parent属性
 - 				this.getParentData('uv-index-list')
 - 				if (!this.parent) {
 - 					return this.$uv.error('uv-index-item必须要搭配uv-index-list组件使用')
 - 				}
 - 				this.$uv.sleep().then(() =>{
 - 					this.getIndexItemRect().then(size => {
 - 						// 由于对象的引用特性,此处会同时生效到父组件的children数组的本实例的top属性中,供父组件判断读取
 - 						this.top = Math.ceil(size.top)
 - 						this.height = Math.ceil(size.height)
 - 					})
 - 				})
 - 			},
 - 			getIndexItemRect() {
 - 				return new Promise(resolve => {
 - 					// #ifndef APP-NVUE
 - 					this.$uvGetRect('.uv-index-item').then(size => {
 - 						resolve(size)
 - 					})
 - 					// #endif
 - 
 - 					// #ifdef APP-NVUE
 - 					const ref = this.$refs['uv-index-item']
 - 					dom.getComponentRect(ref, res => {
 - 						resolve(res.size)
 - 					})
 - 					// #endif
 - 				}) 
 - 			}
 - 		},
 - 	}
 - </script>
 - 
 - <style lang="scss" scoped>
 - 	@import '@/uni_modules/uv-ui-tools/libs/css/components.scss';
 - </style>
 
 
  |