| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | <template>	<view class="u-drawdown-item">		<u-overlay			customStyle="top: 126px"			:show="show"			:closeOnClickOverlay="closeOnClickOverlay"			@click="overlayClick"		></u-overlay>		<view			class="u-drawdown-item__content"			:style="[style]"			:animation="animationData"			ref="animation"		>			<slot />		</view>	</view></template><script>	// #ifdef APP-NVUE	const animation = uni.requireNativePlugin('animation')	const dom = uni.requireNativePlugin('dom')	// #endif	import props from './props.js';	/**	 * Drawdownitem	 * @description 	 * @tutorial url	 * @property {String}	 * @event {Function}	 * @example	 */	export default {		name: 'u-drawdown-item',		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],		data() {			return {				show: false,				top: '126px',				// uni.createAnimation的导出数据				animationData: {},			}		},		mounted() {			this.init()		},		watch: {			// 发生变化时,需要去更新父组件对应的值			dataChange(newValue, oldValue) {				this.updateParentData()			}		},		computed: {			// 监听对应变量的变化			dataChange() {				return [this.title, this.disabled]			},			style() {				const style = {					zIndex: 10071,					position: 'fixed',					display: 'flex',					left: 0,					right: 0				}				style.top = uni.$u.addUnit(this.top)				return style			}		},		methods: {			init() {				this.updateParentData()			},			// 更新父组件所需的数据			updateParentData() {				// 获取父组件u-dropdown				this.getParentData('u-dropdown')				if (!this.parent) uni.$u.error('u-dropdown-item必须配合u-dropdown使用')				// 查找父组件menuList数组中对应的标题数据				const menuIndex = this.parent.menuList.findIndex(item => item.title === this.title)				const menuContent = {					title: this.title,					disabled: this.disabled				}				if (menuIndex >= 0) {					// 如果能找到,则直接修改					this.parent.menuList[menuIndex] = menuContent;				} else {					// 如果无法找到,则为第一次添加,直接push即可					this.parent.menuList.push(menuContent);				}			},			async setContentAnimate(height) {				this.animating = true				// #ifdef APP-NVUE				const ref = this.$refs['animation'].ref				animation.transition(ref, {					styles: {						height: uni.$u.addUnit(height)					},					duration: this.duration,					timingFunction: 'ease-in-out',				}, () => {					this.animating = false				})				// #endif							// #ifndef APP-NVUE				const animation = uni.createAnimation({					timingFunction: 'ease-in-out',				});				animation					.height(height)					.step({						duration: this.duration,					})					.step()				// 导出动画数据给面板的animationData值				this.animationData = animation.export()				// 标识动画结束				uni.$u.sleep(this.duration).then(() => {					this.animating = false				})				// #endif			},			overlayClick() {				this.show = false				this.setContentAnimate(0)			}		},	}</script><style lang="scss" scoped>	@import '../../libs/css/components.scss';		.u-drawdown-item {				&__content {			background-color: #FFFFFF;			overflow: hidden;			height: 0;		}	}</style>
 |