<movable-area style="width: 100%;height:{{(audioList.length)*150}}px;position: relative;">
<movable-view wx:for="{{audioList}}" wx:key="attach_id" class="big_card" style="z-index:{{index == moveId ? 2 : 1}}" y="{{item.y}}" direction="all" bind:change="moving" bind:touchend='moved' data-moveid="{{index}}">
<movable-view>
<movable-area>
使用原生组件
//初始化
init(dataList) {
// 列表项高度
console.log(dataList);
const ITEM_HEIGHT = 135;
// 列表项上外边距
const ITEM_MARGIN_TOP = 15;
let audioList = dataList.map((item, index) => {
item.id = index
// 重置单项的y坐标(组件默认是绝对定位 left:0 top:0 )
item.y = (ITEM_HEIGHT + ITEM_MARGIN_TOP) * index + ITEM_MARGIN_TOP
return item
})
this.setData({
audioList
})
},
// 移动中-获取移动元素的id,实时获取移动元素的y坐标
moving(e) {
// console.log(e.currentTarget.dataset.moveid);
this.setData({
moveId: e.currentTarget.dataset.moveid,
endY: e.detail.y,
})
},
// 移动后
moved() {
let {
audioList,
moveId,
endY
} = this.data;
console.log(audioList);
let newaudioList = JSON.parse(JSON.stringify(audioList));
newaudioList[moveId].y = endY;
newaudioList = newaudioList.sort((a, b) => a.y - b.y)
this.init(newaudioList)
}