赞
踩
技术上使用
Vue2
、ElementUI
。对列表做上移,下移,置顶,置底等操作。
<template>
<div>
<div class="rows" v-for="(item,index) in rows" :key="index" >
<div> {{ item.id + item.name }}</div>
<div class="order-btns">
<el-button @click="orderClick(0,index)" size="mini" type="primary" circle icon="el-icon-arrow-up" class="btn"/>
<el-button @click="orderClick(1,index)" size="mini" type="primary" circle icon="el-icon-arrow-down" class="btn"/>
<el-button @click="orderClick(2,index)" size="mini" type="success" circle icon="el-icon-top" class="btn"/>
<el-button @click="orderClick(3,index)" size="mini" type="success" circle icon="el-icon-bottom" class="btn"/>
</div>
</div>
</div>
</template>
<style lang="stylus" scoped>
.rows {
display: flex;
margin: 15px;
.order-btns {
margin-left: 10px;
}
}
</style>
16
行,深度拷贝原数组,因为下面会使用 splice
方法,避免影响原数组。Array splice 方法会改变原数组;22
行,上移操作,当移动下标为 0
,直接赋值为 0
。否则下标减 1
;26
行,下移操作,当移动下标等于数组长度减 1
,即为当前值。否则下标加 1
;30
行,置顶操作,移动下标直接赋值为 0
;34
行,置底操作,移动下标直接赋值为数组长度减 1
;export default { data() { return { rows: [ { id:1, name: '测试'}, { id:2, name: '测试'}, { id:3, name: '测试'}, { id:4, name: '测试'}, { id:5, name: '测试'}, ] } }, methods: { orderClick(type, i) { // 深度拷贝原数组,因为下面会使用 splice 方法,避免影响原数组 let arr = [...this.rows]; // 默认下标 0 let index = 0; // 判断 switch (type) { case 0: {// 上移 index = i === 0 ? i : (i - 1); break; } case 1: {// 下移 index = i === arr.length - 1 ? i : (i + 1); break; } case 2: {// 置顶 index = 0; break; } case 3: {// 置底 index = arr.length - 1; break; } } // 先删除原有 let item = arr.splice(i, 1); // 再删除新地方 arr.splice(index, 0, item[0]); this.rows = arr; }, } } </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。