【开发】uniapp实现产品分类页动态加载

本文描述了如何在uniapp应用中,通过调用后台提供的webservice接口获取产品分类信息,实现在左侧列表点击后动态加载右侧的产品列表,无需刷新界面,优化用户体验。
摘要由CSDN通过智能技术生成

客户需求:客户产品品类较高,需要左侧通过文字的形式显示所有分类信息,点击分类不需要重新加载当前界面,直接更新加载产品列表页。

实现思路:

1、后台需要一个获取产品分类webservice接口、一个获取产品信息接口(都是通过产品分类找查)。

2、uniapp前台分两块,一块左侧列表,一块产口信息。

3、用户选择产品分类后,前台动态加载更新右侧产品信息。

显示效果:

在这里插入图片描述

获取产品分类代码如下:

//获取当前产品分类
				let requestUrl=this.websiteUrl +"/WebService.asmx/GetProductAllTypeList";
				//当前用户已登录,获取详情
				if(this.hasLogin){
					requestUrl=this.websiteUrl +"/LoginWebService.asmx/GetProductAllTypeList?customerId="+this.userInfo.UserId;
				}
				uni.request({
					url: requestUrl,
					data: {},
					method: 'GET',
					header: {
						'Content-Type': 'text/xml; charset=utf-8',
					},
					success: (res) => {
						const doc = new DOMParser().parseFromString(res.data, 'text/xml');
						var proList = JSON.parse(doc.getElementsByTagName("string")[0].childNodes[0].nodeValue);
						list = proList || [];
						this.currentId = list[0].PRODUCT_TYPE_ID;
						list.forEach(item => {
							if (item.PARENT_TYPE_ID == 1) {
								this.flist.push(item); //一级分类
							}
						});
						list.forEach(item => {
							var cf = false;
							this.flist.forEach(ff => {
								if (ff.PRODUCT_TYPE_ID == item.PRODUCT_TYPE_ID) {
									cf = true;
								}
							})
							if (!cf) {
								this.slist.push(item); //二级分类
							}
						});
						list.forEach(item => {
							var cf = false;
							this.flist.forEach(ff => {
								if (ff.PRODUCT_TYPE_ID == item.PRODUCT_TYPE_ID) {
									cf = true;
								}
							});
							this.tlist.forEach(tt => {
								if (tt.PRODUCT_TYPE_ID == item.PRODUCT_TYPE_ID) {
									cf = true;
								}
							});
							if (!cf) {
								this.tlist.push(item); //三级分类
							}
						});
						this.flist.forEach(ff => {
							if (ff.PRODUCT_TYPE_ID != list[0].PRODUCT_TYPE_ID) {
								this.vlist[ff.PRODUCT_TYPE_ID] = false;
							} else {
								this.vlist[ff.PRODUCT_TYPE_ID] = true;
							}
						
						});
					},

页面代码如下:

<scroll-view scroll-y class="left-aside">
			<view v-for="item in flist" :key="item.PRODUCT_TYPE_ID" class="f-item b-b" :class="{active: item.PRODUCT_TYPE_ID === currentId}"
			 @click="tabtap(item)">
				{{item.TYPE_NAME}}
			</view>
		</scroll-view>
		<scroll-view scroll-with-animation scroll-y class="right-aside" @scroll="asideScroll" :scroll-top="tabScrollTop">
			<view v-for="ii in flist" :key="ii.PRODUCT_TYPE_ID" class="s-list" :id="'main-'+ii.id" v-show="vlist[ii.PRODUCT_TYPE_ID]">
				<!--<text class="s-item">{{ii.TYPE_NAME}}</text>-->
				<view class="i-item" @click="navToList(ii)">
					<image :src="siteUrl + '/UpLoadFile/'+ii.TYPE_BIG_IMG"></image>
				</view>

				<view class="t-list">
					<view @click="navToList(titem)" v-if="titem.PARENT_TYPE_ID === ii.PRODUCT_TYPE_ID"
					 class="t-item" v-for="titem in slist" :key="titem.PRODUCT_TYPE_ID">
						<image :src="siteUrl + '/UpLoadFile/'+titem.TYPE_MIN_IMG"></image>
						<text>{{titem.TYPE_NAME}}</text>
					</view>
				</view>
			</view>
		</scroll-view>
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值