sph---排序模块的实现

<div class="navbar-inner filter">
							<!-- 排序的结构 -->
							<ul class="sui-nav">
								<!-- 判断谁应该有类名  通过判断searchParams.order属性值中是否包含1(综合)来实现 -->
								<li :class="{ active: isOne }" @click="changeOrder('1')">
									<a
										>综合<span
											v-if="isOne"
											class="iconfont"
											:class="{
												'icon-down': isDesc,
												'icon-up': isAsc,
											}"
										></span
									></a>
								</li>
								<!-- 判断谁应该有类名  通过判断searchParams.order属性值中是否包含2(价格)来实现 -->
								<li :class="{ active: isTwo }" @click="changeOrder('2')">
									<a
										>价格<span
											v-if="isTwo"
											class="iconfont"
											:class="{
												'icon-down': isDesc,
												'icon-up': isAsc,
											}"
										></span
									></a>
								</li>
							</ul>
						</div>
<script>
	import SearchSelector from "./SearchSelector";

	export default {
		name: "Search",
		components: {
			SearchSelector,
		},
		data() {
			return {
				// 带给服务器的参数
				searchParams: {
					// 一级分类id
					category1Id: "",
					// 二级分类id
					category2Id: "",
					// 三级分类id
					category3Id: "",
					// 分类名字
					categoryName: "",
					// 搜索关键字
					keyword: "",
					// 排序(初始状态是综合且降序)
					order: "1:desc",
					// 分页器用的,代表定期那是第几页
					pageNo: 1,
					// 每一页展示产品个数
					pageSize: 5,
					// 产品属性操作带的参数
					props: [],
					// 品牌
					trademark: "",
				},
			};
		},
		// 计算属性
		computed: {
			// mapGetters里面的写法:传递的是一个数组,因为getters计算属性是没有划分模块的(没有划分home、search模块),只要里面有goodsList这个属性,就能直接获取到
			...mapGetters(["goodsList"]),
			isOne() {
				return this.searchParams.order.indexOf("1") != -1;
			},
			isTwo() {
				return this.searchParams.order.indexOf("2") != -1;
			},
			isAsc() {
				return this.searchParams.order.indexOf("asc") != -1;
			},
			isDesc() {
				return this.searchParams.order.indexOf("desc") != -1;
			},
		},
		methods: {
            // 发请求,获取search模块数据(根据参数不同,返回不同数据)
			// 把这次请求封装为一个函数,在需要的时候调用即可
			getSearchData() {
				// 派发action  通知Vuex发请求,获取搜索模块的数据,存储在仓库中
				this.$store.dispatch("getSearchList", this.searchParams);
			},
			// 排序的操作
			//flag形参(用户点击时传递进来的),它是一个标记,代表用户点击的是综合(1)还是价格(2)
			changeOrder(flag) {
				// 获取order原始状态 "1:desc"
				let orginOrder = this.searchParams.order;
				let orginOrderFlag = orginOrder.split(":")[0]; //原始是综合还是排序
				let orginOrderSort = orginOrder.split(":")[1]; //原始排序状态
				// 定义一个新的order
				let newOrder = "";
				// 判断用户多次点击的是不是同一个按钮
				if (flag == orginOrderFlag) {
					newOrder = `${orginOrderFlag}:${orginOrderSort == "desc" ? "asc" :"desc"}`;
				} else {
					// 用户多次点击的不是同一个按钮
					newOrder = `${flag}:${"desc"}`;
				}
				//将新的newOrder赋给order
				this.searchParams.order = newOrder;
				// 再次发送请求
				this.getSearchData();
			},
		},
	};
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值