Vue.js Vuetify datatable监视不会触发

Vue.js Vuetify datatable监视不会触发,vue.js,datatable,vuejs2,vuetify.js,vue-data-tables,Vue.js,Datatable,Vuejs2,Vuetify.js,Vue Data Tables,在头项单击上执行的函数“更改排序”不会触发监视,监视从服务器获取更新的数据。另一方面,如果我尝试在changeSort方法的末尾执行fetchRecords方法,watch会被多次触发 我需要使用Vuetify datatables进行服务器端分页和排序,并使用头和项的模板。我实现的代码类似于Vuetify示例:“对服务器端进行分页和排序”以及文档中的“Slot:items和header” 丹麦康迪达塔酒店 丹麦polecającego 因内 {{header.text}} fas fa分拣

在头项单击上执行的函数“更改排序”不会触发监视,监视从服务器获取更新的数据。另一方面,如果我尝试在changeSort方法的末尾执行fetchRecords方法,watch会被多次触发

我需要使用Vuetify datatables进行服务器端分页和排序,并使用头和项的模板。我实现的代码类似于Vuetify示例:“对服务器端进行分页和排序”以及文档中的“Slot:items和header”


丹麦康迪达塔酒店
丹麦polecającego
因内
{{header.text}}
fas fa分拣
{{props.item.candidateName}
{{props.item.candidateSurname}
{{props.item.candidateEmail}
{{props.item.candidatePhone}
{{props.item.refererName}
{{props.item.refererNames}
{{props.item.refererEmail}
{{props.item.refererPhone}
检查圆的轮廓
检查圆的轮廓
您对“{searchField}}”的搜索未找到任何结果。
从“vuex”导入{mapState,mapActions};
导出默认值{
数据(){
返回{
公告ID:“”,
公告标题:“”,
搜索字段:“”,
标题:[
{文本:'Imię',值:'candidateName'},
{文本:'Nazwisko',值:'candidateSurname'},
{text:'Email',value:'candidateEmail',sortable:false},
{文本:'Telefon',值:'candidatePhone'},
{text:'Imię',value:'refererName'},
{文本:'Nazwisko',值:'ReferrerRansame'},
{text:'Email',value:'refererEmail',sortable:false},
{文本:'Telefon',值:'refererPhone'},
{text:'Status',value:'processed'},
{text:'Akcje',value:'actions',sortable:false},
],
分页:{
页码:1,
行页码:10,
项目总数:10,
糟糕的是:'',
下降:错,
},
分页加载:false
}
},
计算:{
…地图状态([
"申请",,
])
},
观察:{
分页:{
处理程序(newVal、oldVal){
如果(newVal!=oldVal){
this.fetchRecords()
}
},
深:是的
}
},
方法:{
…映射操作([
“getApplications”,
]),
获取记录(){
this.paginationLoading=true
这是getApplications({
announcementId:this.announcementId,
分页:这个。分页,
搜索:this.searchField
})
.那么(
响应=>{
this.paginationLoading=false
如果(this.pagination.totalItems!=response.totalItems)this.pagination.totalItems=response.totalItems
}
)
.接住(
错误=>{
控制台日志(err);
}
)
},
更改排序(列值,可排序){
if(可排序===false){
返回
}
if(this.pagination.sortBy===columnValue){
this.pagination.descending=!this.pagination.descending
console.log(this.pagination.descending);
}否则{
this.pagination.sortBy=columnValue
this.pagination.descending=false
}
},
editTableItem(项目){
控制台日志(项目);
},
onClearSearch(){
this.searchField=''
this.fetchRecords()
},
}
}

更改
分页时,应创建新对象。这里我使用ES6语法:

changeSort (columnValue, sortable) {
    if(sortable === false){
      return
    }
    if (this.pagination.sortBy === columnValue) {
      this.pagination = {
        ...this.pagination,
        descending: !this.pagination.descending
      }
      console.log(this.pagination.descending);
    } else {
      this.pagination = {
        ...this.pagination,
        sortBy: columnValue,
        descending: false
      }
    }
}

你确定这不是电话吗。对我来说,
如果(newVal!=oldVal)
是错误的。这不是比较js中对象的正确方法。谢谢你的回答,它修复了watch未被触发的问题,但现在我面临着一个问题,在对分页进行任何操作后,watch多次触发
changeSort (columnValue, sortable) {
    if(sortable === false){
      return
    }
    if (this.pagination.sortBy === columnValue) {
      this.pagination = {
        ...this.pagination,
        descending: !this.pagination.descending
      }
      console.log(this.pagination.descending);
    } else {
      this.pagination = {
        ...this.pagination,
        sortBy: columnValue,
        descending: false
      }
    }
}