uni-list-ad.vue 2.2 KB
Newer Older
DCloud_JSON's avatar
DCloud_JSON 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
<template>
	<!-- #ifdef APP-NVUE -->
	<cell>
		<!-- #endif -->
		<view class="uni-list-ad">
			<view v-if="borderShow" :class="{'uni-list--border':border,'uni-list-item--first':isFirstChild}"></view>
			<ad style="width: 200px;height: 300px;border-width: 1px;border-color: red;border-style: solid;" adpid="1111111111"
			 unit-id="" appid="" apid="" type="feed" @error="aderror" @close="closeAd"></ad>
		</view>
		<!-- #ifdef APP-NVUE -->
	</cell>
	<!-- #endif -->

</template>

<script>
	// #ifdef APP-NVUE
	const dom = uni.requireNativePlugin('dom');
	// #endif
	export default {
		name: 'UniListAd',
		props: {
			title: {
				type: String,
				default: '',

			}
		},
		// inject: ['list'],
		data() {
			return {
				isFirstChild: false,
				border: false,
				borderShow: true,
			}
		},

		mounted() {
			this.list = this.getForm()
			if (this.list) {
				if (!this.list.firstChildAppend) {
					this.list.firstChildAppend = true
					this.isFirstChild = true
				}
				this.border = this.list.border
			}
		},
		methods: {
			/**
			 * 获取父元素实例
			 */
			getForm(name = 'uniList') {
				let parent = this.$parent;
				let parentName = parent.$options.name;
				while (parentName !== name) {
					parent = parent.$parent;
					if (!parent) return false
					parentName = parent.$options.name;
				}
				return parent;
			},
			aderror(e) {
				console.log("aderror: " + JSON.stringify(e.detail));
			},
			closeAd(e) {
				this.borderShow = false
			}
		}
	}
</script>

<style lang="scss" scoped>
	.uni-list-ad {
		position: relative;
		border: 1px red solid;
	}

	.uni-list--border {
		position: relative;
		padding-bottom: 1px;
		/* #ifdef APP-PLUS */
		border-top-color: $uni-border-color;
		border-top-style: solid;
		border-top-width: 0.5px;
		/* #endif */
		margin-left: $uni-spacing-row-lg;
	}

	/* #ifndef APP-NVUE */
	.uni-list--border:after {
		position: absolute;
		top: 0;
		right: 0;
		left: 0;
		height: 1px;
		content: '';
		-webkit-transform: scaleY(.5);
		transform: scaleY(.5);
		background-color: $uni-border-color;
	}

	.uni-list-item--first:after {
		height: 0px;
	}

	/* #endif */
</style>