手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2020年02月28日的文章

vue + sortable js的一些简单操作

 用sortable处理排序,代码真的很少,不需要引用什么vue-sortable之类的。但会有个问题。。实际的DOM和Vnode可能会显示不一致。往往拖完了,序号变了,数据变了(可以通过console.log来查看),但就是DOM没变。

后来是搜索到这篇文章,写的比较详情:https://www.jianshu.com/p/d92b9efe3e6a,我就不多写了。我的几行代码类似如下:

JavaScript代码
  1. dragable() {  
  2.   let contentRow = document.querySelector('.content-row');//指定element,如果有ID最好,在这个下面的元素,最好都是统一类型的,如果当前元素是ul,那就是拖li  
  3.   Sortable.create(contentRow, {  
  4.     onEnd: ({newIndex, oldIndex}) => {  //监听拖动结束事件  
  5.       let newline = contentRow.children[newIndex],  
  6.         oldline = contentRow.children[oldIndex];  
  7.       // 先删除移动的节点 ,再插入移动的节点到原有节点,还原了移动的操作  
  8.       //这里是操作DOM  
  9.       contentRow.removeChild(newline);  
  10.       contentRow.insertBefore(newline, newIndex > oldIndex? oldline : oldline.nextSibling);  
  11.       //这里是操作数据  
  12.       let currRow = this.items.splice(oldIndex, 1)[0];  
  13.       this.items.splice(newIndex, 0, currRow);  
  14.   
  15.     }  
  16.   });  
  17. },  

这个方法是vue的methods中的。不复杂。看看就行。记录一下。原来我觉得很简单。这个方法的最后两行就行了。。。但就是DOM不变。参考了上面链接中的内容才加了那两行。