先看知識點:
splice交換數組內指定元素:
swapItems(arr, index1, index2){//交換元素 --//數組,元素1,元素2 arr[index1] = arr.splice(index2, 1, arr[index1])[0]; return arr; },
實際案例:實現數組元素上下移動
根據for循環出來的數個列表其實是一個數組:列表一行可上下移動比如播放列表下移
列表是由數組順序展示,所以只要操作數組順序即可(另一種是按照指定key排序)
操作數組內的數據進行上下移動只要三個工具函數即可:
交換數組內元素
swapItems(arr, index1, index2){//交換元素 --//數組,元素1,元素2 arr[index1] = arr.splice(index2, 1, arr[index1])[0]; return arr; },
上移
upRecord(arr, $index){//上移 if($index == 0) { return; } this.swapItems(arr, $index, $index - 1); },
下移
downRecord (arr, $index){//下移 if($index == arr.length -1) { return; } this.swapItems(arr, $index, $index + 1); },
置頂
toFirst(fieldData,index) {//置頂 if(index!=0){ // fieldData[index] = fieldData.splice(0, 1, fieldData[index])[0]; 這種方法是與另一個元素交換了位子, fieldData.unshift(fieldData.splice(index , 1)[0]); } },
置底
toLast(fieldData,index){//置底 // fieldData[index] = fieldData.splice(0, 1, fieldData[index])[0]; 這種方法是與另一個元素交換了位子, fieldData.push(fieldData.splice(index , 1)[0]); },
說明:參數是數組和當前所操作的數據在數組中的索引
在點擊事件內傳入渲染本列表的數組和當前點擊的索引即可使用:
handleMenuClick(e,i){//上移下移事件 console.log(e,i)//e是默認框架事件來獲取key值,i是傳入的當前列表在數組的索引 if(e.key=="2"){//下移 this.downRecord(this.ajaxlist,i) }else{//上移 this.upRecord(this.ajaxlist,i) } },
效果如下:
置定類似