<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'; 
 | 
    // #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: [uni.$u.mpMixin, uni.$u.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> 
 |