当前位置: 首页 > news >正文

08前端项目----升序/降序

升序/降序

    • vue实现升序/降序
    • 服务器处理

vue实现升序/降序

用vue实现升序/降序,以及css绘制三角形

<div class="sui-navbar"><div class="navbar-inner filter"><ul class="sui-nav"><li class="active"><a href="#">综合</a></li><li><a href="#" @click="sortByPrice">价格<i class="angle_top" :class="{active: priceSort === true}"></i><i class="angle_bottom" :class="{active: priceSort === false}"></i></a></li></ul></div>
</div>
<style>
.angle_top {width: 0;height: 0;display: block;border-style: solid;border-width: 0 6px 6px;border-color: transparent transparent #5e5e5e;position: absolute;top: 10px;right: 17px;
}.angle_bottom {width: 0;height: 0;display: block;border-style: solid;border-width: 6px 6px 0;border-color: #5e5e5e transparent transparent;position: absolute;bottom: 14px;right: 17px;
}
.angle_top.active, .angle_bottom.active {color: red; /* 高亮显示当前排序方向的箭头 */
}
</style>
  • searchList的goodsList里面有price,根据价格排序;初次点击是升序,再次点击就是降序
data(){return{priceSort:null, //null:默认排序,true:升序;false:降序}
},
computed:{sortedGoodsList(){if(priceSort === null){return this.goodsList;}//在副本上修改数组,避免修改原始数据const sorted = [...this.goodsList];sorted.sort((a,b)=>{return this.priceSort?a.price-b.price:b.price-a.price;});return sorted;}
},
//点击价格按钮
merhods:{sortByPrice(){if(this.priceSort===null){this.priceSort = true;}else{this.priceSort = !this.priceSort;}}
}
<li class="yui3-u-1-5" v-for="good in sortedGoodsList" :key="good.id"><div class="list-wrap"><div class="p-img"><a href="item.html" target="_blank"><img :src="good.defaultImg" /></a></div><div class="price"><strong><em>¥</em><i>{{good.price}}.00</i></strong></div></div>
</li>

服务器处理

实际开发当中有大量的数据,通过上面的方法消耗性能。而且通常情况下需要分页和全局排序,前端无法实现全局价格排序,应该后端处理然后向后端请求数据

  • 数据实时性和准确性:后端实时动态变化数据和处理,可返回前端最新数据
  • 性能优化:后端排序+分页返回,避免浏览器内存溢出与卡顿
  • 确保数据安全性

这里我用的是阿里巴巴的图标,不是手写的
可以在阿里巴巴选择图标然后复制图标的代码
在public/index里面引入图标css样式即可
<link rel="stylesheet" href="https:这里就是图标的代码">
如下在项目中使用(图标的名字分别是icon-up和icon-down)

  <li><a href="#" @click="sortByPrice">价格<span class="iconfont" :class="{'icon-up':isAsc,'icon-down':isDesc}"></span></a></li>

计算属性:
后端请求回来的数据searchParams里面有order字段,order属性值为字符串例如’asc’、‘desc’。只需要修改就行

data(){return{order : null//刚开始为默认}
},computed:{isAsc(){return this.searchParams.order.indexOf('asc')!==-1;},isDesc(){return this.searchParams.order.indexOf('desc')!==-1;},
}

点击价格触发函数

methods:{sortByPrice(){if( this.searchParams.order === 'desc'){this.searchParams.order = 'asc'}else{this.searchParams.order = 'desc'}//再次发送请求}
}

相关文章:

  • 资本怪兽贝莱德投资数据分析报告-独家
  • 基于OpenCV的骨骼手势识别分析系统
  • 仓颉造字,亦可造AI代理
  • `std::cout << xxx`
  • 虚幻基础:动画k帧
  • 抱佛脚之学SSM四
  • C++_并发编程_thread_01_基本应用
  • Python 之 pyecharts 使用
  • Yocto项目实战教程-第7章定制镜像菜谱与内核菜谱-7.2小节-定制应用程序
  • 使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧为JPG图片
  • AI 模型可靠性危机:DeepSeek 输出异常的技术归因与防范实践
  • 电源上电回勾现象
  • 【c语言】指针和数组笔试题解析
  • 常见数据库关键字示例 SQL 及执行顺序分析(带详细注释)
  • LX10-MDK的使用技巧
  • Qt基础006(事件)
  • 全国 OSM 数据集(2014 - 2024 年)
  • 【刷题Day23】线程和进程(浅)
  • 深度学习-全连接神经网络-3
  • Java核心API-网络编程
  • AI时代的阅读——当今时代呼唤文学的思想实验和人文认知
  • 两代“楚王”世纪同框,楚王熊悍鼎将回安徽展出
  • 又一名被拐孩子找到!29年后,在警方帮助下云南男子寻子成功
  • 上海黄金交易所:贵金属价格波动剧烈,提示投资者做好风险防范
  • 由“环滁皆山”到“环滁皆景”,滁州如何勾勒“文旅复兴”
  • 江西农商联合银行正式挂牌开业