uniapp实现组件化列表开发

在使用uniapp开发的时候我们经常需要使用到组件化开发,这样可以减少代码的冗余,今天我来分享一下我的组件化列表开发

	创建目录
	-MyUniapp
		-components
			-modeItem
				-index.vue    //存放组件的代码
		-pages
			-mode
				-index.vue  //父类

//先编写组件代码

	<!-- 编辑验证码组件
@author: lijing
@email: lijinghailjh@163.com
@Date: 2021 8 10
 -->
<template>
	<view>
		<view class="cu-card article ">
		<!-- 通过点击事件传递参数-->
			<view class="cu-item shadow borderBottom" @click="navigator(item.id)" v-for="(item,index) in list"
				:key="index">
				<view class="title">
					<view class="text-cut">验证码:{{item.code}}</view>
				</view>
				<view class="content">
					<image :src="item.img" mode="aspectFit"></image>
					<view class="desc">
						<view class="text-content">
							<view>盖章单位:{{item.company}}</view>
							<view>盖章经办人:{{item.handler}}</view>
							<view>盖章地点:{{item.address}}</view>
						</view>

						<view class="margin-top-xs">
							<view class="text-gray light sm round fl">盖章时间:{{item.createTime}}</view>

						</view>
					</view>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		// 接收外界传来的数据
		props: ['list'],
		// 增加时间过滤器
		filters: {
			formatDate(date) {
				if (date != null) {
					console.log(date)
					const nDate = new Date(date)
					console.log(nDate)
					const year = nDate.getFullYear().toString().padStart(2, 0)
					const month = nDate.getMonth().toString().padStart(2, 0)
					const day = nDate.getDay().toString().padStart(2, 0)
					const hours = nDate.getHours().toString().padStart(2, 0)
					const minutes = nDate.getMinutes().toString().padStart(2, 0)
					return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes
				} else {
					return '(请点击填写数据)'
				}
			}
		},
		methods: {
			navigator(id) {
				// 调用父组件的方法
				this.$emit('itemClick', id)
			}
		}
	}
</script>

<style lang="scss" scoped>
	.box {
		margin: 20upx 0;
		width: 100%;
		position: fixed;
		bottom: -16px;

		.margin-bottom-xl {
			margin-bottom: 20rpx;
		}
	}
</style>

接下来父组件引用

<template>
	<view>
		<!-- 引用组件-->
		<view>
			<getCodeItem @itemClick="goDetail" :list="list"></getCodeItem>
		</view>

	</view>
</template>

<script>
// 导入组件
	import getCodeItem from '../../components/getCodeItem/index.vue';
	export default {
		data(){
			return{
				// 列表信息
				list:[
					{	
						// id
						id:'1',
						// 验证码
						"code":'1234 5678 9000',
						// 盖章单位
						"company":*******有限公司',
						// 盖章经办人
						"handler":'李四',
						// 盖章地点
						"address": '南京秦淮',
						// 盖章时间
						"createTime": '2021年 8月 9日',
						// 图片
						"img": 'https://cdn.jsdelivr.net/gh/Dorian1015/cdn/img/custom/tuxiang.jpg'
					}
				]
				
			}
		},

		// 注册组件
		components: {
			"getCodeItem": getCodeItem
		},
		methods: {
			
			// 点击跳转
			goDetail(id) {
				console.log("id:" + id)
				uni.navigateTo({
					url: '/pages/getCode/edit?id=' + id
				})
			},
	}
</script>

<style lang="scss" scoped>

</style>

效果图
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值