情况描述:sorting方法由点击事件触发,对el-table绑定的tableData进行排序。排序完成后,tableData数据发生变化,但是el-table视图并没有更新。(用watch监控,打印tableData,看到tableData已经排序了,view层级没有变化)这是vue的问题,不是element-ui的问题。Vue的监控有点奇怪。data和view双向绑定时,如果绑定的是array数组,使用array[index]=newValue的直接赋值方式,改变array数组中某一项的值。观点是不会改变的。对于这种情况(只改变数组中某一项的值,让视图更新),vue官方给出了一个$set方法来处理。vm.$set(vm.items,indexOfItem,newValue)vm是vue的实例名。其实在应用的时候,可以使用下面的方法,this指向实例。this.$set(this.tableData,index,newItemData)官方的例子是处理数组中某一项的值变化,并没有解决我们这次排序遇到的问题。排序完成后,如果view没有变化,最简单的解决办法就是下面这句:this.tableData=this.tableData.slice(0);让tableData绑定的数组成为新的内存地址,这样视图就会刷新。奇怪的是在tableData中push一个item,(此时数组的地址没有改变)view会被更新。但是调整项目的顺序,视图不会更新。如果项中的数据因分配而更改,则不会更新视图。移植自我自己的dirackehttps://www.yuque.com/diracke...
