今天项目经理给我提了一个需求,希望表格能够根据表格的某个字段动态排序表格,例如下图:
听到需求时感觉也挺简单,给字段的输入框加上chang事件,用排序算法在字段值改变时把表格重新排序,在赋值就好了。
this.replace=this.editTable;
for(let i=0;i<this.replace.length-1;i++){
for(let j=0;j<this.replace.length-1-i;j++){
let temp;
if(this.replace[j].seqNo>this.replace[j+1].seqNo){
temp=this.replace[j];
this.replace[j]=this.replace[j+1];
this.replace[j+1]=temp;
}
}
}
this.editTable=this.replace;
运行后发现并无效果
把editTable的值打印到控制台发现其实table已经排序好了(图中为了直观只打印了排序的字段)
于是意识到了可能是页面没有重新渲染,于是到网上找寻了解决方法,终于让我找到了
https://www.imooc.com/wenda/detail/522301
大佬说:因为数组直接赋值不能被 Object.defineProperty 检测到,于是我把
this.editTable=this.replace改为this.$set(this.editTable,this.replace)
终于实现了需求!