心就是AI

共知心是水,安见我非鱼

0%

修改EasyUI源码,解决datagrid重复请求数据的问题

说在前面的话

前段时间做前后端分离,前端采用jQuery EasyUI。 EasyUI确实是个不错的东东,在使用过程中还是很有收获的,决定写几篇关于EasyUI的文章(当然不会写使用教程之类的东东,因为官方文档已经足够详细了)

问题描述

在使用datagrid组件时,发现一个很奇怪的问题,那就是当页面向后台请求数据时,如果未请求到数据,则会再请求一次,很显然这是不合理的、多余的
EasyUI的版本:1.4

解决办法

原来的代码

1
2
3
4
5
6
7
8
if(_615.total!=data.total){
_614.pagination("refresh",{total:data.total});
if(opts.pageNumber!=_615.pageNumber){
opts.pageNumber=_615.pageNumber;
_5d7(_60f);
}
}
}

修改后的代码,在_5d7(_60f);外加了一个判断语句

1
2
3
4
5
6
7
8
9
10
if(_615.total!=data.total){
_614.pagination("refresh",{total:data.total});
if(opts.pageNumber!=_615.pageNumber){
opts.pageNumber=_615.pageNumber;
if(_615.pageNumber!=0){
_5d7(_60f);
}
}
}
}

说明

  1. _5d7(_60f); 这一行的作用就是向后台请求数据
  2. _615.pageNumber 则是请求到的数据页数,没数据时,它是0
  3. opts.pageNumber 则是默认时页数,它是1
  4. 很显然,没请求到数据时(即数据条数为0),以上两个值不相等,按原来的代码就会再去请求一次,加上判断后,问题解决
  5. datagrid加载数据这一块代码,其实是一个间接递归的过程,有意者可自行调试看看(因这并不是真正的源码,而是经过压缩过的,调试起来比较费劲)