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